我是一个喜欢在iPad上使用Swift Playgrounds的人,你可以在Swift中获得更多编码经验。在浮岛上我注意到允许以下代码:
world.place(Block(), atColumn: 2, row: 2)
这种方法让我失望,因为我们不必担心创建实例并将其分配给变量。如果我想返回并修改此Block()实例,是否可以将其分配给变量?我很好奇,如果这是在为iPhone构建应用程序时实际开发的工作方式,还是仅适用于学习练习?
答案 0 :(得分:3)
如果我想返回并修改此Block()实例,是否可以将其分配给变量?
没有。你需要变量作为参考。
你对这里发生的事情的直觉是正确的。我们可以说:
let b = Block()
world.place(b, atColumn: 2, row: 2)
但是由于b
没有其它任何事情,它被编译器优化了,我们最终得到了与实际使用的完全相同的代码:
world.place(Block(), atColumn: 2, row: 2)
由于这种优化,如果你做使用第一种形式,就不会发生任何不好的事情,所以一定要继续使用它,如果它让你感觉更舒服的话。 (在某些方面,第一种形式更适合用于调试目的,因为它为您提供了一些可以逐步检查的内容。)
然而(回到原点),正如你正确暗示的那样,如果我们 想要在这里修改这个Block对象,我们将需要分配它是一个变量,否则我们就没有参考来做它。
答案 1 :(得分:1)
不,你可以用这种方式编写生产代码。我不熟悉实际示例,但看起来您只需创建一个Blocks对象并将其放在特定位置。
如果您想稍后更改它,它取决于world
对象,您是否可以在指定位置获取对象并进行编辑。有时这需要获取引用,更改它然后将其保存回来,或者world
对象允许您编辑该位置的对象,您不需要引用该对象。