Почему @dynamicCallable не компилируется, даже если dynamicCall (withArguments :) реализован? - PullRequest
0 голосов
/ 30 мая 2019

Мой код прост:

@dynamicCallable
struct A {
  func dynamicallyCall(withArguments arguments: Int...) -> Int {
    return 0
  }
}

Это выдает ошибку:

@dynamicCallable attribute requires 'A' to have either a valid 'dynamicallyCall(withArguments:)' method or 'dynamicallyCall(withKeywordArguments:)' method

Не уверен, что еще я могу попытаться заставить его работать.Кажется, ничего не написано с ошибкой.

1 Ответ

2 голосов
/ 30 мая 2019

Подпись метода неверна, поскольку в документации указано, что он должен иметь один параметр, соответствующий протоколу "ExpressibleByArrayLiteral".

Объявление метода dynamicicallyCall (withArguments :) должна иметь единственный параметр, который соответствует ExpressibleByArrayLiteral протокол ...

https://docs.swift.org/swift-book/ReferenceManual/Attributes.html (см. Раздел dynamicCallable )

Так что вы не должны выражать это как Int ... , а как [Int] вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...