首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Swift中将字符串转换为函数调用

问如何在Swift中将字符串转换为函数调用
EN

Stack Overflow用户
提问于 2015-04-18 18:19:58
回答 2查看 1.4K关注 0票数 1

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

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

代码语言:javascript
复制
number1 operationButton.currentTitle number2

其中operationButton.currentTitle表示+、-、*或/。

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

EN

回答 2

Stack Overflow用户

发布于 2015-04-18 18:41:39

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

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

代码语言:javascript
复制
let operators: [String:(Double,Double)->Double] = [
    "plus":     (+),
    "minus":    (-),
    "divide":   (/),
    "multiply": (*),
]

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

代码语言:javascript
复制
if let op = operators["divide"] {
    op(3,4)  // returns 0.75
}
票数 7
EN

Stack Overflow用户

发布于 2015-04-18 19:13:57

您不应该依靠按钮标题的某些值来决定要执行的操作。如果稍后将+更改为add,该怎么办?然后本地化成不同的语言?或者按钮根本没有标题,只有花哨的图片?

最好将不同的操作连接到每个按钮,例如

代码语言:javascript
复制
@IBAction func addAction(sender: UIButton) {
    // add operands ...
}

@IBAction func subtractAction(sender: UIButton) {
    // subtract operands ...
}

还请注意,不同的运算符要求可能需要不同的错误处理,例如divideAction将检查分母是否为零。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29715934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档