Я не говорю о указателях на функции C, а в методе типа Swift.Как объявить, создать и использовать указатели методов в Swift?
struct Test: GeneratorType {
var methodPointer: mutating() -> Bool? // Non-working guess
var which: Bool
init() {
which = false
methodPointer = which ? &testMethod1 : &testMethod2 // Also non-working guess
}
//...
}
компилятор говорит «mutating
» не является законным в рамках функции декларации. (На самом деле, он просто предлагает полуколоду.) И для инициализации указателя (после удаления mutating
) компилятор думает, что я пытаюсь вызвать функции и использовать их результаты вместо этого. Я хочу использовать методы как объекты внутри себя, а не как вызов функции. Позже я хочу использовать направленный метод в пределах next
; не вычисляя это, мне придется прибегнуть к флагом перечисления и вручную выбрать, какой метод вызывать в пределах next
.
Надеюсь, что есть часть механики закрытия, которая позволяет это. Может быть, что-то вроде this page, which describes functions returning functions. Но ни один из примеров, которые я видел, упоминает методы mutating
.
Ссылку вы предоставили был с июля 2014 года и не следует доверять. Это произошло через месяц после того, как Свифт вышел, и эти статьи, как правило, вводят в заблуждение, ошибочны и устарели. Вы можете попробовать документы Swift на закрытие. https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html – ryantxr
От взгляда на [этот текст] (https://twitter.com/JadenGeller/status/619426292232908800) , Я не думаю, что методы 'mutating' поддерживаются, даже если я могу выяснить, как вызывать нестатические методы. – CTMacUser
Мои попытки часто заканчиваются на «Частичное применение метода« mutating »не допускается». – CTMacUser