无法通过下标分配:下标是get-only

时间:2018-05-05 07:23:59

标签: 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]) }

错误

  

无法通过下标分配:下标是get-only

1 个答案:

答案 0 :(得分:1)

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

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

表示闭包必须返回Double

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