Как создать импортируемый модуль в Swift?
Я прочитал документацию Apple для Swift и не могу найти ничего о том, как создавать модули или как определять члены класса или структуры как частные или публичные.
в синтаксисе есть ссылки на оператор import, но я не могу найти никакой информации о том, что он делает или как его использовать.
кто-нибудь знает где я могу найти это?
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
доступ ограничивает использование сущность к включающему объявлению и к расширениями этого объявления, которые находятся в том же файле. Используйте Частный доступ, чтобы скрыть детали реализации определенной части функциональности, когда эти детали используются только в одном объявлении."