仅在 Swift iPad 的 Playgrounds 学习练习中不为类型分配变量名称是否有效?
Does Not Assigning a Variable Name To a Type Only Work In Swift Playgrounds Learning Exercises for iPad?
我是一个菜鸟,喜欢在 iPad 上使用 Swift 游乐场,在那里您可以在 Swift 中获得更多编码经验。在 Floating Islands 关卡上,我注意到允许使用以下代码:
world.place(Block(), atColumn: 2, row: 2)
这让我很反感,因为我们不必担心创建实例并将其分配给变量的问题。如果我想返回并修改此 Block() 实例,是否可以不将其分配给变量?我很好奇这是否是为 iPhone 构建应用程序时实际开发的工作方式,或者这是否仅适用于学习练习?
If I wanted to go back and modify this Block() instance, is it possible without having it assigned to a variable?
没有。您需要该变量作为参考。
你对这里发生的事情的直觉是正确的。我们可以说:
let b = Block()
world.place(b, atColumn: 2, row: 2)
但是由于 b
没有做任何其他事情,它被编译器优化掉了,我们最终得到了与实际使用的完全相同的代码:
world.place(Block(), atColumn: 2, row: 2)
由于该优化,如果您使用第一种形式,就不会发生任何坏事,所以一定要继续使用它,如果它让您感觉更舒服的话。 (在某些方面,第一种形式更适合调试目的,因为它为您提供了逐步检查的方法。)
但是(回到原点),正如你正确暗示的那样,如果我们确实想在这里修改这个Block对象,我们会 需要将其分配给一个变量,否则我们将没有任何参考。
不,您实际上可以这样编写生产代码。我不熟悉实际示例,但看起来您只是创建了一个 Blocks 对象并将其放置在特定位置。
如果以后要修改就看world
对象,能否获取到指定位置的对象并进行编辑。有时这需要获取引用、更改它然后将其保存回来,或者 world
对象允许您在不需要引用的位置编辑对象。
我是一个菜鸟,喜欢在 iPad 上使用 Swift 游乐场,在那里您可以在 Swift 中获得更多编码经验。在 Floating Islands 关卡上,我注意到允许使用以下代码:
world.place(Block(), atColumn: 2, row: 2)
这让我很反感,因为我们不必担心创建实例并将其分配给变量的问题。如果我想返回并修改此 Block() 实例,是否可以不将其分配给变量?我很好奇这是否是为 iPhone 构建应用程序时实际开发的工作方式,或者这是否仅适用于学习练习?
If I wanted to go back and modify this Block() instance, is it possible without having it assigned to a variable?
没有。您需要该变量作为参考。
你对这里发生的事情的直觉是正确的。我们可以说:
let b = Block()
world.place(b, atColumn: 2, row: 2)
但是由于 b
没有做任何其他事情,它被编译器优化掉了,我们最终得到了与实际使用的完全相同的代码:
world.place(Block(), atColumn: 2, row: 2)
由于该优化,如果您使用第一种形式,就不会发生任何坏事,所以一定要继续使用它,如果它让您感觉更舒服的话。 (在某些方面,第一种形式更适合调试目的,因为它为您提供了逐步检查的方法。)
但是(回到原点),正如你正确暗示的那样,如果我们确实想在这里修改这个Block对象,我们会 需要将其分配给一个变量,否则我们将没有任何参考。
不,您实际上可以这样编写生产代码。我不熟悉实际示例,但看起来您只是创建了一个 Blocks 对象并将其放置在特定位置。
如果以后要修改就看world
对象,能否获取到指定位置的对象并进行编辑。有时这需要获取引用、更改它然后将其保存回来,或者 world
对象允许您在不需要引用的位置编辑对象。