Как я могу использовать Swift в Терминале?

108

Я прочитал Что нового в Xcode 6 . В статье представлена ​​новая функция Xcode 6, и в ней говорится:

Командная строка

Отладчик Xcode включает интерактивную версию языка Swift, известную как REPL (Read-Eval-Print-Loop). Используйте синтаксис Swift для оценки и взаимодействия с вашим запущенным приложением или для написания нового кода в среде, подобной сценарию. REPL доступен из LLDB в консоли Xcode или из Терминала.

Я хочу знать, как получить REPL?

Ривен
источник
3
Вот статья, которую я написал об этом. medium.com/swift-programming/…
Сантош
Вы также можете использовать его онлайн, если вам нравится repl.it/languages/swift
Амджад Масад

Ответы:

136
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

тогда вы можете сделать одно из следующих действий:

xcrun swift 
lldb --repl

Начиная с Xcode 6.1 - ввод swiftв терминале также запускает REPL.

Каан Дедеоглу
источник
2
... и чтобы выйти, введите Ctrl+ d.
arve0
57

В качестве альтернативы, если вы не хотите испортить текущую среду разработки, вы можете просто запустить:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
Себастьян Виндаль
источник
30
Или вы даже можете сделать еще один шаг и добавить это к своему ~/.bash_profile:alias swift="/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift"
Дэвид Бек
6
Чтобы иметь возможность использовать OS X SDK, вы также должны указать путь к нему:/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -sdk /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk
Линус Уннебек,
Спасибо за идею, Дэвид. Я добавил это в профиль, но продолжаю получать «Нет такого файла или каталога», хотя он и есть права доступа -rwxr-xr-x@ 1 mark2 admin 33557440 31 May 14:43 swift. Я не так уж силен в единице. Кто-нибудь может увидеть, что не так?
MarkAurelius 09
Использование, xcrun --find swiftчтобы получить путь, будет гораздо более
Майк Веллер
1
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 swiftнамного лучше. Ответ происхождения здесь: stackoverflow.com/a/36254848/5768974
Puttin
42

Шаг 1. Откройте терминал.
Шаг 2: введите "swift".
Шаг 3: нет шага 3.

Пример:

GoldCoast:~ macmark$ swift
Welcome to Swift!  Type :help for assistance.
  1> println("Hello, world")
Hello, world
  2> var myVariable = 42
myVariable: Int = 42
  3> myVariable = 50
  4> let myConstant = 42
myConstant: Int = 42
  5> println(myVariable)
50
  6> let label = "The width is "
label: String = "The width is "
  7> let width = 94
width: Int = 94
  8> let widthLabel = label + String(width)
widthLabel: String = "The width is 94"
  9> :exit

GoldCoast:~ macmark$ 
MacMark
источник
Хотя вы можете продолжать использовать xcrun swift, начиная с Swift 2.1 и далее, вы можете просто запускать его swiftиз командной строки.
Timbo
Мой пример взят из Swift 1.0 в июле 2014 года. Он всегда работал без xcrun для меня.
MacMark
16

В Xcode 6.1.1 с установленными инструментами командной строки вы можете выполнять сценарии, ссылаясь напрямую /usr/bin/swiftследующим образом:

#!/usr/bin/swift

let variable: String = "string"
print("Test \(variable)")
Маркус Раутопуро
источник
Подтвердите, что это работает с Swift 2.1.1 (установка xcode 7.2)
thibaut noah
1
Любой, кто хочет поиграть со Swift 2.3 в Xcode 8, не должен пропустить stackoverflow.com/a/36254848/1298043
Puttin
15

Так же, как и при запуске Swift из Терминала, вы также можете выполнять сценарии. Просто используйте следующий шебанг и запустите свой скрипт. ( Согласно Крису Латтнеру , создателю Swift)

#!/usr/bin/env xcrun swift -i
Johankj
источник
6
В соответствии с XCode 6 Beta 5 -iфлаг был удален и приведет к ошибке. Просто отпустите и используйте #!/usr/bin/env xcrun swiftвместо этого.
Jeehut,
Любой, кто хочет поиграть со Swift 2.3 в Xcode 8, не должен пропустить stackoverflow.com/a/36254848/1298043
Puttin
10

Если кому-то нужен простой сценарий Swift, shebang:

#!/usr/bin/env xcrun --sdk macosx swift

Если требуется конкретная целевая версия

#!/usr/bin/env xcrun --sdk macosx swift -target x86_64-macosx10.11

Если требуется конкретная инструментальная цепочка (например, вы хотите использовать Swift 2.3, но используете Xcode 8)

#!/usr/bin/env xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 --sdk macosx swift -target x86_64-macosx10.11

Если вы хотите использовать Swift 2.2 в своем Xcode 7.3.1, предположим, что Xcode 7.3.1 находится в /Applications/Xcode7.app

sudo xcode-select -s /Applications/Xcode7.app/
xcrun --sdk macosx swift

с этого момента активный каталог разработчика по умолчанию изменился, вы можете проверить это, используя:

xcode-select -p

Если вы хотите использовать снимки, предоставленные Swift.org , не пропустите установку здесь .


как впервые ответил я в Run swift script from Xcode iOS project as build phase

Путтин
источник
8

** обновление от xcode6 beta 4 **

это также можно сделать в настройках xcode. просто перейдите в xcode -> настройки -> местоположения.

для инструментов командной строки просто выберите нужную версию из выпадающего списка, см. рисунок ниже. (swift требует, чтобы путь был путем xcode6).

экран инструментов командной строки

Я также оставлю свой предыдущий ответ ниже.


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

откройте сценарий Apple> вставьте этот код ниже и экспортируйте его как приложение, чтобы одним щелчком мыши вы могли переключиться на путь по умолчанию или путь к бета-версии (для использования Swift)

set xcode6Path to "xcode-select -switch /Applications/Xcode6-Beta.app/Contents/Developer"
set xcodeDefaultPath to "xcode-select -switch /Applications/Xcode.app/Contents/Developer"

display dialog "set xcode sdk path to " buttons {"xcode 6", "default"} default button 1
copy result as list to {buttonPressed}
if buttonPressed is "default" then
    try
        do shell script xcodeDefaultPath with administrator privileges
    end try
else
    try
        do shell script xcode6Path with administrator privileges
    end try
end if

затем запустите> xcrun swift

отказ

  1. сценарий предполагает, что у вас установлены xcode6-beta и xcode5.
  2. Если вы новый разработчик, который пробует только xcode6beta, вам не потребуется никаких скриптов или установка пути вручную. просто запустите, xcrun swiftпоскольку путь уже установлен для вас.
  3. когда, наконец, будет выпущен xcode6, вам нужно будет сбросить путь до значения по умолчанию из этого простого приложения и никогда не использовать его снова.
nsuinteger
источник
У меня был установлен XCode 5, и теперь я "обновил" (= заменил) до XCode 6. Есть ли способ вернуть 5.x сейчас? С этим решением?
Матиас Макс
что значит вернуть 5.x? xcode6 GM или выпуск appstore заменит xcode5.
nsuinteger
6

После установки официального выпуска Xcode 6.1 swiftв /usr/bin/swift.

Имейте в виду, что если в пути указан Python, отличный от Python, поставляемого Apple, swiftс ImportError: No module named site. В таком случае обязательно сделайте это export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbinперед звонком swift.

Juandesant
источник
5

Команда xcrun будет использовать переменную среды DEVELOPER_DIR, чтобы переопределить текущую выбранную установку Xcode (как установлено с помощью xcode-select). Вы можете использовать это для создания одной команды, которая будет быстро запускаться в командной строке и помещать вас в REPL. Это выглядит так:

/usr/bin/env DEVELOPER_DIR=/Applications/Xcode6-Beta.app/Contents/Developer xcrun swift 

и вы можете использовать псевдоним просто «быстро»:

alias swift="/usr/bin/env DEVELOPER_DIR=/Applications/Xcode6-Beta.app/Contents/Developer xcrun swift"

Интересно отметить, что вы можете использовать такой же вызов для запуска быстрого скрипта, как если бы вы использовали bash или python, добавив -i:

#!/usr/bin/env DEVELOPER_DIR=/Applications/Xcode6-Beta.app/Contents/Developer xcrun swift -i

println("Hello World!")

Конечно, как только Xcode 6 будет официально выпущен и вы переключитесь на него в качестве инструментов разработчика по умолчанию, вы можете отказаться от битов DEVELOPER_DIR = .. и просто использовать «xcrun swift».

Джей Лайерли
источник
4

убедитесь, что вы установили xcode 6.0 , но не 6.1

Если вы получили сообщение об ошибке:

<unknown>:0: error: the SDK 'MacOSX10.9.sdk' does not support Swift

просто беги

xcrun --sdk iphonesimulator8.0 swift

или вы можете

export SDKROOT="iphonesimulator8.0" 

а потом

xcrun swift

Используйте " xcodebuild -showsdks" для вывода списка доступных имен SDK.

если вы установите xcode 6.1 , просто

sudo xcode-select -s /Applications/*your-Xcode-6.1-path.app*/Contents/Developer
xcrun swift
Лю лей
источник
2

Для XCode6 выполните следующие команды:

$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/

$ xcrun swift

Если вы получили сообщение об ошибке:

<unknown>:0: error: the SDK 'MacOSX10.9.sdk' does not support Swift

пытаться:

xcrun swift -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
Винисиус Миана
источник
1

открыть терминал

$sudo xcode-select -switch /Applications/Xcode6-Beta6.app/Contents/Developer

Примечание:Xcode6-Beta6.app следует заменить на соответствующую версию вы установили

Затем поместите эту строку alias swift='xcrun swift'в~/.bash_profile

И,

$source ~/.bash_profile

$swift

Вот так!

Джонни Чжао
источник
1

С помощью Swift REPL (Read Eval Print Loop).

Разработчики, знакомые с интерпретируемыми языками, будут чувствовать себя комфортно в этой среде командной строки, и даже опытные разработчики найдут несколько уникальных функций.

Запустите Terminal.app, введите swift и нажмите Enter. После этого вы попадете в Swift REPL.

        1> print("Hello Swift REPL")
     Hello Swift REPL
        2> 10 + 20
     $R0: Int = 30
        3> var name = "Yogendra Singh"
     name: String = "Yogendra Singh"
        4> print(name)
     Yogendra Singh
        5>
Йогендра Сингх
источник