是否存在与swift等效的“eval”函数,就像在Matlab中一样?

时间:2015-04-16 12:44:37

标签: matlab swift eval

如果没有,我如何循环遍历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格式,但我只是表达了我想要做的事情。

2 个答案:

答案 0 :(得分:3)

Swift是一种静态类型语言,所以在Matlab中实现类似“eval”的东西是不可能的。 您可以使用以下代码获得相同的行为:

@IBOutlet var labels: [UILabel]!
override func viewDidLoad() {
    super.viewDidLoad()
    for label in labels {
        label.backgroundColor = UIColor.redColor()
    }
}

虽然可能使用运行时可以做一些魔术,但连接同一个插座集合中的所有组件是最简单的方法。

答案 1 :(得分:0)