При перемещении кода функции WHOLE в другой файл - Function.swift (не в классе), то вы можете вызвать эту функцию, например let index = findIndexOfString(name, neighbors)
, потому что вы определяете ее вне класса, что означает, что она является глобальной функцией, и вы может получить к нему доступ в любом месте.
Если вы не объявите функцию закрытой, что ограничивает видимость файла, в котором он определен, вы можете использовать его в любом месте модуля, если объявлено как внутреннее (по умолчанию), а также из внешних модулей, если объявлено как общедоступное ,
Для получения дополнительной информации о функциях вы можете обратиться Apple Documentation.
ОБНОВЛЕНИЕ:
Тот факт, что структуры и перечислений могут определять методы в Swift является одним из основных отличие от C и Objective-C. В Objective-C классы являются единственными типами, которые могут определять методы. В Swift вы можете выбрать, следует ли определять класс, структуру или перечисление и по-прежнему иметь гибкость в определении методов для типа, который вы создаете.
Локальные и внешние Параметр Названия методов:
методы в Swift очень похожи на своих коллег в Objective-C.
Swift дает имя первого параметра в методе локального имени параметра по умолчанию и дает по умолчанию второй и последующий имена параметров как локальные, так и внешние имена параметров. Это соглашение соответствует типичному соглашению об именах и вызовах, с которым вы будете знакомы, при написании методов Objective-C, а также для экспресс-вызовов методов без необходимости определять имена параметров.
Рассмотрим этот Counter
класс, который определяет более сложную форму метода incrementBy(_:)
:
class Counter {
var count: Int = 0
func incrementBy(amount: Int, numberOfTimes: Int) {
count += amount * numberOfTimes
}
}
Этот incrementBy(_:numberOfTimes:)
метод имеет два параметра-количество и numberOfTimes
. По умолчанию Swift обрабатывает сумму только как локальное имя, но обрабатывает numberOfTimes
как локальное, так и внешнее имя. Вы вызываете метод следующим образом:
let counter = Counter()
counter.incrementBy(5, numberOfTimes: 3)
// counter value is now 15
Вам не нужно определить имя внешнего параметра для первого значения аргумента, поскольку его цель ясна из названия функции incrementBy (_: numberOfTimes :). Второй аргумент, однако, квалифицируется внешним именем параметра, чтобы сделать его цель понятной при вызове метода.
Поведение, описанное выше, означает, что определения метода в Swift написаны с тем же грамматическим стилем, что и Objective-C, и вызываются естественным, выразительным образом.
Для получения дополнительной информации обратитесь к этому Apple Document.
И вы можете проверить видео THIS, и вы получите ответ в 0:55.
На самом деле, мой вопрос, почему я переместил свой код в другой файл, как я назвал функцию измененной (без тега - arr :)? –
привет, я думаю, я нашел другое объяснение по поводу моего вопроса ... http://www.objc.io/issues/16-swift/swift-functions/ (Вызов всех функций и вызов методов). В этой статье говорится, что если код, не включенный в класс, будет рассматриваться как ФУНКЦИЯ, если это так, я буду рассматривать как МЕТОД. Способ, которым мы называем функцию и метод, различен. –
Я уже предоставил ссылку на документы в своем ответе, которую вы можете проверить там. –