如何在Swift中将String转换为Function调用

mor*_*itz 1 swift

我正在写一个小应用程序,我想用作计算器.对于计算器的运算符,我从switch语句开始,例如乘以两个值.因此我创建了一个字典,它工作得很好.

我现在发现,如果我写一些类似的东西,它将非常有用并且可以节省代码

number1 operationButton.currentTitle number2
Run Code Online (Sandbox Code Playgroud)

其中,operationButton.currentTitle将代表+,-,*/.

我现在的问题是如何将字符串转换operationButton.currentTitle为这些运算符的函数调用?

Air*_*ity 7

在Swift中,您可以将函数视为变量 - 例如,您可以将它们存储在字典中.此外,Swift中的运算符只是具有非字母名称的函数(可以使用中缀等).

这意味着您可以在字典中存储二进制操作:

let operators: [String:(Double,Double)->Double] = [
    "plus":     (+),
    "minus":    (-),
    "divide":   (/),
    "multiply": (*),
]
Run Code Online (Sandbox Code Playgroud)

然后查找这些操作并使用您获得的任何操作,如下所示:

if let op = operators["divide"] {
    op(3,4)  // returns 0.75
}
Run Code Online (Sandbox Code Playgroud)