调用一个需要 SKAction.runBlock() 参数的函数
Call a function which expects arguments with SKAction.runBlock()
我正在使用 Swift 和 SpriteKit
我想使用 SKAction.runBlock() 来 运行 一个需要参数的函数 :
class Tile : SKShapeNode
{
}
override func didMoveToView()
{
let tile = Tile()
tile.runAction(SKAction.runBlock(myFunc(tile)))
}
func myFunc(tile: Tile)
{
}
当我尝试创建一个不需要任何参数的函数时,一切正常,但是 returns 上面的代码是这样的:
Cannot convert value of type '()' to expected argument type
'dispatch_block_t' (aka '@convention(block) () -> ()')
我有什么不明白的?
您缺少 {} 只是:
tile.runAction(SKAction.runBlock({
myFunc(tile)}))
写这样的表达式:
SKAction.runBlock(myFunc(tile))
您正在传递调用 myFunc(tile)
的结果。
(我相信您不认为这段代码:SKAction.runBlock(sin(0))
,会将某种闭包传递给 runBlock
。)
并且 myFunc(tile)
的 returned 值是一个空值,因为 myFunc
被声明为 return 没有。 void 值也可以表示为 ()
。错误消息说 ()
无法转换为 @convention(block) () -> ()
.
类型的闭包
因此,您需要创建类型为 @convention(block) () -> ()
的闭包。
tile.runAction(SKAction.runBlock({()->() in myFunc(tile)}))
简而言之:
tile.runAction(SKAction.runBlock({myFunc(tile)}))
我正在使用 Swift 和 SpriteKit
我想使用 SKAction.runBlock() 来 运行 一个需要参数的函数 :
class Tile : SKShapeNode
{
}
override func didMoveToView()
{
let tile = Tile()
tile.runAction(SKAction.runBlock(myFunc(tile)))
}
func myFunc(tile: Tile)
{
}
当我尝试创建一个不需要任何参数的函数时,一切正常,但是 returns 上面的代码是这样的:
Cannot convert value of type '()' to expected argument type 'dispatch_block_t' (aka '@convention(block) () -> ()')
我有什么不明白的?
您缺少 {} 只是:
tile.runAction(SKAction.runBlock({
myFunc(tile)}))
写这样的表达式:
SKAction.runBlock(myFunc(tile))
您正在传递调用 myFunc(tile)
的结果。
(我相信您不认为这段代码:SKAction.runBlock(sin(0))
,会将某种闭包传递给 runBlock
。)
并且 myFunc(tile)
的 returned 值是一个空值,因为 myFunc
被声明为 return 没有。 void 值也可以表示为 ()
。错误消息说 ()
无法转换为 @convention(block) () -> ()
.
因此,您需要创建类型为 @convention(block) () -> ()
的闭包。
tile.runAction(SKAction.runBlock({()->() in myFunc(tile)}))
简而言之:
tile.runAction(SKAction.runBlock({myFunc(tile)}))