ios - 无法通过下标赋值 : subscript is get-only

标签 ios swift expression

我正在使用 Expression创建一个非常先进的计算器,从用户那里获取字符串输入。我正在尝试添加函数来为计算器提供更多功能,但是我无法添加自定义或转换函数。您能否解释一下为什么会出现以下错误。

有效的代码

 public static let mathSymbols: [Symbol: SymbolEvaluator] = {
        var symbols: [Symbol: SymbolEvaluator] = [:]
        symbols[.function("atan", arity: 1)] = { atan($0[0]) }
        symbols[.function("abs", arity: 1)] = { abs($0[0]) }
        symbols[.function("log", arity: 1)] = { log2($0[0]) }
        return symbols
 }()

无效的输入

        symbols[.function("number", arity: 1)] = { Float($0[0]) }
        symbols[.function("number", arity: 1)] = { someFunction($0[0]) }

错误

Cannot assign through subscript: subscript is get-only

最佳答案

错误信息具有误导性。 Expression.swift定义

public typealias SymbolEvaluator = (_ args: [Double]) throws -> Double

这意味着闭包必须返回一个Double:

symbols[.function("number", arity: 1)] = { Double($0[0]) }

关于ios - 无法通过下标赋值 : subscript is get-only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50186867/

相关文章:

C 运算符优先级 - 数组下标和前缀增量

android - 代号一 显示键盘时表单布局不折叠

android - 迁移到 Cloud Endpoints Framework v2,iOS 客户端

ios - Xcode 项目打不开

ios - clang : error: linker command failed with exit code 1 (use -v to see invocation) in iOS app after deleting AdMob

ios - UITableView 未从 API 调用加载数据

C# 使用 ExpressionTree 将 DataTable 映射到 List<T>

swift - 如何以字符串形式异步下载 URL 数组

ios - 使用 equalToSystemSpacingAfter 前后边距的布局

css - Sass 可以执行混合算术吗?