我正在写一个小应用程序,我想用它作为计算器。对于计算器的运算符,我从switch语句开始,例如将两个值相乘。因此,我创建了一个字典,它工作得很好。
我现在发现,如果我写一些类似这样的代码,它将非常有用,并且可以节省代码
number1 operationButton.currentTitle number2其中operationButton.currentTitle表示+、-、*或/。
我现在的问题是,如何将operationButton.currentTitle字符串转换为这些运算符的函数调用?
发布于 2015-04-18 18:41:39
在Swift中,您可以将函数视为变量-例如,您可以将它们存储在字典中。此外,Swift中的运算符只是具有非字母名称的函数(可以用在后缀等中)。
这意味着您可以在字典中存储二进制操作:
let operators: [String:(Double,Double)->Double] = [
"plus": (+),
"minus": (-),
"divide": (/),
"multiply": (*),
]然后查找这些操作,并使用您得到的任何一个,如下所示:
if let op = operators["divide"] {
op(3,4) // returns 0.75
}发布于 2015-04-18 19:13:57
您不应该依靠按钮标题的某些值来决定要执行的操作。如果稍后将+更改为add,该怎么办?然后本地化成不同的语言?或者按钮根本没有标题,只有花哨的图片?
最好将不同的操作连接到每个按钮,例如
@IBAction func addAction(sender: UIButton) {
// add operands ...
}
@IBAction func subtractAction(sender: UIButton) {
// subtract operands ...
}还请注意,不同的运算符要求可能需要不同的错误处理,例如divideAction将检查分母是否为零。
https://stackoverflow.com/questions/29715934
复制相似问题