Mah*_*ray 2 ios sprite-kit swift
在使用Apple的SpriteKit查看教程冒险游戏的源代码时,我一直看到变量被声明,并且在声明它们之后有开括号和单词"in".
这是我正在使用的代码:
let rightThumbstickHandler: GCControllerDirectionPadValueChangedHandler = { dpad, x, y in
let length = hypotf(x, y)
if length <= 0.5 {
player.heroFaceLocation = nil
return
}
Run Code Online (Sandbox Code Playgroud)
就像那样,"dpad,x,y in".有谁知道它们是什么/它们用于什么?
这是一个封闭的定义捕捉三个变量,其参数为dpad,x和y.该in声明封闭执行该代码的实际开始.变量的值由调用者提供.
更新:在in帮助标记代码的开始,即假设你有以下可选的闭包变量:
var foo : (Array<Int> -> Int)?
Run Code Online (Sandbox Code Playgroud)
现在,您希望在代码中实际定义它并且您想要实现(伪代码):
foo = { for every int in array -> sum }
Run Code Online (Sandbox Code Playgroud)
问题是,你如何访问阵列?这就是,当模式匹配跳跃时,例如
foo = { numbers [...] }
Run Code Online (Sandbox Code Playgroud)
这里,数组将被赋值给一个名为的不可变变量numbers.在此之后,您可以直接编写代码,但是如何通过模式匹配和局部变量区分调用者的变量赋值?这就是,当in你发挥作用时,例如你会写
foo = { numbers in return numbers.reduce(0, { $0 + $1 }) }
Run Code Online (Sandbox Code Playgroud)
现在,很明显,后面的所有内容都in将在闭包内用于计算.此外,通过查看闭包变量的初始定义,您还将知道numbers将是什么类型.
为了完整起见,您现在可以通过此方式调用此方法
let x = foo?([1, 2, 3]) // x = 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
436 次 |
| 最近记录: |