不将变量名称分配给仅在Swift Playgrounds中学习练习的类型吗?

时间:2017-08-03 18:05:59

标签: ios swift swift-playground

我是一个喜欢在iPad上使用Swift Playgrounds的人,你可以在Swift中获得更多编码经验。在浮岛上我注意到允许以下代码:

world.place(Block(), atColumn: 2, row: 2)

这种方法让我失望,因为我们不必担心创建实例并将其分配给变量。如果我想返回并修改此Block()实例,是否可以将其分配给变量?我很好奇,如果这是在为iPhone构建应用程序时实际开发的工作方式,还是仅适用于学习练习?

2 个答案:

答案 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对象允许您编辑该位置的对象,您不需要引用该对象。