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

Программируем под 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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