Как создать импортируемый модуль в Swift?

Я прочитал документацию Apple для Swift и не могу найти ничего о том, как создавать модули или как определять класс или элементы структуры как частные или публичные.

В синтаксисе есть ссылки на оператор import, но я не могу найти никакой информации о том, что он делает или как его использовать.

Кто-нибудь знает, где я могу это найти?

Ответ 1

Последнее обновление бета-версии Xcode 6 (бета-версия 4) обеспечивает быстрый доступ к управлению доступом

Swift Позволяет контролировать доступ

Управление доступом Swift имеет три уровня доступа:

  • частные объекты могут быть доступны только из исходного файла, где они определены.
  • внутренние объекты могут быть доступны в любом месте объекта, где они определены.!
  • публичные объекты могут быть доступны из любого места в пределах целевого объекта и из любого другого контекста, который импортирует текущий целевой модуль.

Ответ 2

В Swift "Модули" относятся к Framework. Xcode теперь имеет шаблон для создания проекта фреймворка для iOS и OS X.

В настоящее время нет способа объявлять методы или свойства public/protected. Если вы хотите, чтобы это было добавлено как функция, вы можете сделать запрос функции на репортер ошибок Apple. Следует также отметить, что Apple заявила, что язык может меняться при каждом выпуске Xcode, поэтому возможно, что уровни доступа участников могут быть добавлены до публичного выпуска.

Ответ 3

Кроме того, есть способ сделать модуль самостоятельно, но это немного сложнее.

Если вы посмотрите на xcrun swift -help, вы можете увидеть несколько параметров, и есть -emit-module, -emit-library и -emit-object, которые могут быть полезны, но, вероятно, вам следует отдавать предпочтение официальному пути и распространять модули через Frameworks.

Если вы все еще хотите создать модуль самостоятельно, вы можете прочитать это руководство с некоторым объяснением

Ответ 4

Apple упомянула, что частные методы еще не существуют, но они находятся в процессе реализации. Помните, что это новорожденный язык, и он все еще накапливается.

Ответ 5

Формулировка к версии Swift 2.2 в Apple Book была:

Модуль представляет собой единую систему распределения кода - структуру или приложение, которое построено и отправлено как единое целое, и которое может быть импортированный другим модулем с ключевым словом импорта Swifts.

Каждая цель сборки (например, пакет приложений или фреймворк) в Xcode рассматривается как отдельный модуль в Swift. Если вы объединяете аспекты кода вашего приложения как самостоятельной структуры - возможно, для инкапсуляции и повторно использовать этот код для нескольких приложений - тогда все, что вы определить в рамках этой структуры будет частью отдельного модуля, когда он импортируется и используется в приложении, или когда он используется в другом рамки.