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


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

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

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

5 71

5 ответов:

обновление

вы можете модулировать проект swift с помощью фреймворков.

мы модулируем путем создания отдельных рамочных проектов для каждого модуля и связываем их через рабочую область Xcode. Это выглядит более естественно, когда мы разделяем компоненты на разные проекты, и это также гарантирует, что существует только односторонняя связь между модулями. Разработчики могут работать / тестировать на изоляции, не задумываясь о других модулях.

по умолчанию классы / структуры / etc, созданные в рамках фреймворка, будут иметь internal тип управления доступом, поэтому он виден только внутри модулей. Чтобы сделать его видимым за пределами модуля, вы можете сделать его public.

дополнительная информация об уровне контроля доступа здесь


последнее обновление Xcode 6 beta (beta 4) обеспечивает контроль доступа к swift

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

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

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

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

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

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

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

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

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

Swift 4.0

описание из главы "контроль доступа" в книге Apple"Язык Программирования Swift (Swift 4 Edition)"

Swift предоставляет пять различных уровней доступа для объектов в вашем коде. Эти уровни доступа относятся к исходному файлу, в котором определена сущность, а также к модулю, которому принадлежит исходный файл.

  • open открыть и public доступ включить сущности, которые будут использоваться в любом исходном файле из их определяющего модуля, а также в исходном файле из другого модуля, который импортирует определяющий модуль. Обычно при указании открытого интерфейса для платформы используется открытый или открытый доступ. Разница между открытым и другим модулем, который импортирует определяющий модуль. Обычно при указании открытого интерфейса для платформы используется открытый или открытый доступ.
  • internal доступ позволяет использовать объекты внутри любой исходный файл из их определяющего модуля, но не в любом исходном файле за пределами этого модуля. Обычно внутренний доступ используется при определении внутренней структуры приложения или платформы.
  • fileprivate доступ ограничивает использование сущности ее собственным определяющим исходным файлом. Используйте закрытый доступ к файлам, чтобы скрыть детали реализации определенной части функциональности, когда эти детали используются во всем файле.
  • private доступ ограничивает использование сущность к включающему объявлению и к расширениями этого объявления, которые находятся в том же файле. Используйте Частный доступ, чтобы скрыть детали реализации определенной части функциональности, когда эти детали используются только в одном объявлении."