Статическая функция расширения протокола не может быть вызвана непосредственно в Swift [закрыто]IOS

Программируем под IOS
Anonymous
Статическая функция расширения протокола не может быть вызвана непосредственно в Swift [закрыто]

Сообщение Anonymous »

Я строю систему действий в реальности, похожая на Scenekit. В частности, я хочу сделать что -то вроде: < /p>
import SceneKit
let action = SCNAction.run { _ in
print("foo")
}
< /code>
Вот мой прогресс: < /p>

protocol RLAction {}

struct RLCallbackAction: RLAction {}

extension RLAction where Self == RLCallbackAction {
static func run() -> RLCallbackAction {
return RLCallbackAction()
}
}

< /code>
Тогда это работает < /p>
let action: RLAction = .run()
< /code>
Но это не удается: < /p>
let action = RLAction.run()
< /code>
С сообщением об ошибке: < /p>
Referencing static method 'run()' on 'RLAction' requires the types 'Self' and 'RLCallbackAction' be equivalent
< /code>
Я полностью понимаю, что могу просто сделать: < /p>
let action = RLCallbackAction.run()

Но это не так эргономично, как rlaction.run () (аналогично scnaction.run ()

Подробнее здесь: https://stackoverflow.com/questions/797 ... y-in-swift

Вернуться в «IOS»