Я работаю с Swift и SpriteKitВызов функции, которая ожидает аргументы SKAction.runBlock()
Я хотел бы использовать SKAction.runBlock(), чтобы запустить функцию, ожидать аргументы:
class Tile : SKShapeNode
{
}
override func didMoveToView()
{
let tile = Tile()
tile.runAction(SKAction.runBlock(myFunc(tile)))
}
func myFunc(tile: Tile)
{
}
Когда я пытаюсь создать функцию, которая не ожидает каких-либо аргументов, все работает отлично, но выше код возвращает это:
Невозможно преобразовать значение типа «()» с ожидаемым типом аргумента ' отправка _block_t '(aka' @convention (block)() ->() ')
Что я не понимаю?
Спасибо за этого ясного объяснения. Итак, почему я могу вызвать функцию без ожидаемого аргумента без необходимости «{}"? – Drakalex
@Drakalex, в Swift, ссылки на методы автоматически преобразуются в замыкание с тем же типом функции. Итак, просто написав 'myFunc', вы создаете закрытие типа' (Tile) -> Void'. Итак, если 'anotherFunc' объявлен как' func anotherFunc() {} ', запись' anotherFunc' создает закрытие типа '() -> Void' (то же самое, что'() ->() '), что вы можете видели раньше. – OOPer
Функции - это закрытие, это закрытие специального случая, поэтому никакого преобразования не происходит (игнорируйте последний комментарий, я понимаю, что вы сейчас говорите) – Knight0fDragon