我正在写一个小应用程序,我想用作计算器。对于计算器的操作员,我开始使用switch语句来例如乘以两个值。因此我创建了一本字典,它工作正常。
我现在发现,如果我写一些类似
的内容,它将非常有用并且可以节省代码number1 operationButton.currentTitle number2
其中operationButton.currentTitle
代表+
,-
,*
或/
。
我现在的问题是如何将operationButton.currentTitle
的字符串转换为这些运算符的函数调用?
答案 0 :(得分:7)
在Swift中,您可以将函数视为变量 - 例如,您可以将它们存储在字典中。此外,Swift中的运算符只是具有非字母名称的函数(可以使用中缀等)。
这意味着您可以在字典中存储二进制操作:
let operators: [String:(Double,Double)->Double] = [
"plus": (+),
"minus": (-),
"divide": (/),
"multiply": (*),
]
然后查看这些操作并使用你得到的任何一个,如下:
if let op = operators["divide"] {
op(3,4) // returns 0.75
}
答案 1 :(得分:4)
您不应该依赖按钮标题来按顺序拥有某些值
决定执行哪个操作。如果+
更改为add
,该怎么办?
后来?然后本地化为不同的语言?或按钮没有
标题,只有一个奇特的形象?
更好地将不同的操作连接到每个按钮,例如
@IBAction func addAction(sender: UIButton) {
// add operands ...
}
@IBAction func subtractAction(sender: UIButton) {
// subtract operands ...
}
另请注意,不同的运营商要求可能需要不同
错误处理,例如divideAction
将检查是否
分母为零。