swift 是否有等效的 "eval" 函数,就像在 Matlab 中一样?
Is there an equivalent "eval" function for swift, like there is in 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 中进行评估。看这里:
https://github.com/johnno1962/InjectionIII/tree/master/EvalApp
源代码:
https://github.com/johnno1962/InjectionIII/blob/master/InjectionBundle/SwiftEval.swift
如果没有,我如何循环遍历 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 中进行评估。看这里:
https://github.com/johnno1962/InjectionIII/tree/master/EvalApp
源代码: https://github.com/johnno1962/InjectionIII/blob/master/InjectionBundle/SwiftEval.swift