【问题标题】:Is there an equivalent "eval" function for swift, like there is in Matlab?swift 是否有等效的“eval”函数,就像在 Matlab 中一样?
【发布时间】:2015-06-22 21:11:04
【问题描述】:

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

【问题讨论】:

    标签: matlab swift eval


    【解决方案1】:
    【解决方案2】:

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

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

    虽然使用运行时可能会发挥一些作用,但连接同一插座集合中的所有组件是最简单的方法。

    【讨论】:

    • 谢谢。你如何填充“标签”?换句话说,如何将 IBOutlets 添加到这个变量“labels”中?
    • 创建数组后@IBOutlet var labels: [UILabel]!使用 Interface Builder,您必须将每个标签连接到 Outlet 集合,如下所示:i62.tinypic.com/2074bd4.png
    • 以编程方式?我声明了我的 IBOutlets。我已经声明了您建议的@IBOutlet var labels:[UILabel]!。我只是对如何将 IBOutlets 放入数组感到困惑,以便我可以使用您的 for 循环方法更改属性。
    • 为什么要编程?如果您使用的是@IBOutlet,则必须使用 Interface Builder 链接它们,如上一个屏幕截图中所示...我不确定我是否正确理解了您的问题...
    猜你喜欢
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    相关资源
    最近更新 更多