swift 是否有等效的 "eval" 函数,就像 Matlab 中一样?



如果没有,我如何循环通过IBOutlets(如temp1、temp2、temp3)并按顺序遍历属性?

在matlab中,我会连接一个字符串并使用eval。

for k = 1:3 
eval(["temp",num2str(k)]);
end

我是Swift的新手,想和IBOutlets合作。类似

for(var k = 0, ++k, k==4) {
eval(["self.temp",String(k),".backgroundcolor"]);
end

我知道eval函数是Matlab格式的,但我只是在表达我想做的事情。

Swift是一种静态类型语言,因此不可能在Matlab中实现类似"eval"的东西。你可以用这个代码达到同样的行为:
@IBOutlet var labels: [UILabel]!
override func viewDidLoad() {
super.viewDidLoad()
for label in labels {
label.backgroundColor = UIColor.redColor()
}
}

尽管使用运行时可能会发挥一些神奇的作用,但连接同一出口集合中的所有组件是最简单的方法。

是的,您可以在swift中执行eval。请参阅此处:

https://github.com/johnno1962/InjectionIII/tree/master/EvalApp

源代码:https://github.com/johnno1962/InjectionIII/blob/master/InjectionBundle/SwiftEval.swift

最新更新