Jak mogę używać Swift w Terminalu?

108

Przeczytałem Co nowego w Xcode 6 . Artykuł wprowadza nową funkcję dotyczącą Xcode 6 i mówi:

Wiersz poleceń

Debugger Xcode zawiera interaktywną wersję języka Swift, znaną jako REPL (Read-Eval-Print-Loop). Użyj składni Swift do oceny i interakcji z uruchomioną aplikacją lub napisz nowy kod w środowisku podobnym do skryptu. REPL jest dostępne z poziomu LLDB w konsoli Xcode lub z terminala.

Chcę wiedzieć, jak uzyskać REPL?

rozdarty
źródło
3
Oto artykuł, który napisałem na ten temat. medium.com/swift-programming/…
Santosh
Możesz również użyć go online, jeśli lubisz repl.it/languages/swift
Amjad Masad

Odpowiedzi:

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

wtedy możesz zrobić jedną z tych rzeczy:

xcrun swift 
lldb --repl

Od Xcode 6.1 - wpisanie swiftw terminalu uruchamia również REPL.

Kaan Dedeoglu
źródło
2
... i aby zakończyć, naciśnij Ctrl+ d.
arve0
57

Alternatywnie, jeśli nie chcesz zepsuć swojego obecnego środowiska deweloperskiego, możesz po prostu uruchomić:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
Sebastien Windal
źródło
30
Możesz też pójść o krok dalej i dodać to do swojego ~/.bash_profile:alias swift="/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift"
David Beck,
6
Aby móc korzystać z OS X SDK, musisz również określić ścieżkę do niego:/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
Linus Unnebäck
Dzięki za pomysł David. Dodałem to do profilu, ale wciąż otrzymuję Brak takiego pliku lub katalogu, mimo że jest tam, a uprawnienia są -rwxr-xr-x@ 1 mark2 admin 33557440 31 May 14:43 swift. Nie jestem tak silny w jednostce. Czy ktoś może zobaczyć, co jest nie tak?
MarkAurelius
Użycie xcrun --find swiftścieżki będzie znacznie bardziej odporne na przyszłość
Mike Weller
1
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 swiftjest o wiele lepsze. Odpowiedź dotycząca pochodzenia tutaj: stackoverflow.com/a/36254848/5768974
Puttin
42

Krok 1: Otwórz terminal
Krok 2: Wpisz „swift”
Krok 3: Nie ma kroku 3

Przykład:

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
źródło
Chociaż możesz nadal używać xcrun swift, od wersji Swift 2.1 możesz po prostu uruchomić swiftz wiersza poleceń.
timbo
Mój przykład pochodzi ze Swift 1.0 w lipcu 2014. Od zawsze działał bez xcrun.
MacMark
15

W taki sam sposób, jak uruchamiając Swift z terminala, możesz również wykonywać skrypty. Po prostu użyj następującego shebang i uruchom skrypt. ( Według Chrisa Lattnera , twórcy Swift)

#!/usr/bin/env xcrun swift -i
johankj
źródło
6
Zgodnie z XCode 6 Beta 5 -iflaga została usunięta i spowoduje błąd. Po prostu odpuść i użyj #!/usr/bin/env xcrun swiftzamiast tego.
Jeehut
Każdy, kto chce grać w Swift 2.3 w Xcode 8, nie powinien przegapić stackoverflow.com/a/36254848/1298043
Puttin
15

W Xcode 6.1.1 z zainstalowanymi Narzędziami wiersza poleceń można wykonywać skrypty, odwołując się bezpośrednio do /usr/bin/swiftnastępującego sposobu:

#!/usr/bin/swift

let variable: String = "string"
print("Test \(variable)")
Markus Rautopuro
źródło
Potwierdź, że działa ze Swift 2.1.1 (instalacja xcode 7.2)
thibaut noah
1
Każdy, kto chce grać w Swift 2.3 w Xcode 8, nie powinien przegapić stackoverflow.com/a/36254848/1298043
Puttin
10

Jeśli komuś zależy na prostym skrypcie Swift shebang:

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

Jeśli wymagana jest określona wersja docelowa

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

Jeśli wymagany jest określony łańcuch narzędzi (np. Chcesz używać Swift 2.3, ale używasz Xcode 8)

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

Jeśli chcesz używać Swift 2.2 w swoim Xcode 7.3.1, załóżmy, że Xcode 7.3.1 znajduje się pod adresem /Applications/Xcode7.app

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

od teraz zmienił się domyślny aktywny katalog deweloperów, możesz to sprawdzić za pomocą:

xcode-select -p

Jeśli chcesz użyć migawek dostarczonych przez Swift.org , nie powinieneś przegapić instalacji tutaj .


jak jako pierwsza odpowiedziałem w sekcji Uruchom szybki skrypt z projektu Xcode iOS w fazie kompilacji

Puttin
źródło
8

** aktualizacja od xcode6 beta 4 **

można to również zrobić w preferencjach xcode. po prostu przejdź do xcode -> preferencje -> lokalizacje.

w przypadku narzędzi wiersza poleceń po prostu wybierz żądaną wersję z opcji listy rozwijanej, patrz zdjęcie poniżej. (Swift wymaga, aby ścieżka była ścieżką xcode6).

ekran narzędzi wiersza poleceń

Zostawię również moją poprzednią odpowiedź poniżej.


co powiedział Kaan, a także możesz użyć skryptu Apple, aby stworzyć prostą aplikację, dzięki której możesz przełączać się między nimi.

otwórz skrypt Apple> wklej poniższy kod i wyeksportuj go jako aplikację, aby jednym kliknięciem przełączyć się na domyślną ścieżkę lub ścieżkę beta (aby użyć 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

następnie uruchom> xcrun swift

zrzeczenie się

  1. skrypt zakłada, że ​​masz zainstalowane zarówno xcode6-beta, jak i xcode5.
  2. jeśli jesteś nowym programistą, który wypróbowuje tylko xcode6beta, nie będziesz potrzebować żadnego skryptu ani ścieżki ustawień ręcznie. po prostu biegnij, xcrun swiftponieważ ścieżka jest już dla Ciebie wyznaczona.
  3. kiedy xcode6 zostanie ostatecznie wydany, będziesz musiał zresetować ścieżkę z powrotem do domyślnej z tej prostej aplikacji i nigdy więcej jej nie używać.
nsuinteger
źródło
Zainstalowałem XCode 5 i teraz "zaktualizowałem" (= zastąpiłem) XCode 6. Czy jest sposób, aby teraz przywrócić 5.x? Z tym rozwiązaniem?
Matthias Max
co masz na myśli, przywróć 5.x? Wersja xcode6 GM lub Appstore zastąpi xcode5.
nsuinteger
6

Po zainstalowaniu oficjalnej wersji Xcode 6.1 istnieje plik swift w programie /usr/bin/swift.

Pamiętaj, że jeśli masz Pythona innego niż dostarczony przez Apple Python na ścieżce, swiftmoże się nie powieść ImportError: No module named site. W takim przypadku upewnij się, że to zrobisz, export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbinzanim zadzwonisz swift.

juandesant
źródło
5

Polecenie xcrun użyje zmiennej środowiskowej DEVELOPER_DIR do zastąpienia aktualnie wybranej instalacji Xcode (zgodnie z ustawieniem z xcode-select). Możesz użyć tego do skonstruowania pojedynczego polecenia, które będzie działać szybko w wierszu poleceń i umieści Cię w REPL. To wygląda tak:

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

i możesz to nazwać po prostu „szybkim”:

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

Na marginesie, możesz użyć tego samego rodzaju wywołania, aby uruchomić szybki skrypt, tak jak używałbyś basha lub pythona, dodając -i:

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

println("Hello World!")

Oczywiście, gdy Xcode 6 zostanie oficjalnie wydany i przełączysz się na to jako domyślne narzędzie programistyczne, możesz porzucić bity DEVELOPER_DIR = .. i po prostu użyć "xcrun swift".

Jay Lyerly
źródło
4

upewnij się, że instalujesz xcode 6.0 , ale nie 6.1

Jeśli pojawi się błąd:

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

po prostu biegnij

xcrun --sdk iphonesimulator8.0 swift

lub możesz

export SDKROOT="iphonesimulator8.0" 

i wtedy

xcrun swift

Posługiwać się "xcodebuild -showsdks ”, aby wyświetlić listę dostępnych nazw SDK.

jeśli zainstalujesz xcode 6.1 , po prostu

sudo xcode-select -s /Applications/*your-Xcode-6.1-path.app*/Contents/Developer
xcrun swift
liu lei
źródło
2

W przypadku XCode6 uruchom następujące polecenia:

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

$ xcrun swift

Jeśli pojawi się błąd:

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

próbować:

xcrun swift -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
Vinicius Miana
źródło
1

otwórz Terminal,

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

Uwaga: plikXcode6-Beta6.app należy wymienić do odpowiedniej wersji zainstalowanego

Następnie umieść tę linię alias swift='xcrun swift' do~/.bash_profile

I,

$source ~/.bash_profile

$swift

Proszę bardzo!

Johnny Zhao
źródło
1

Z pomocą Swift REPL (Read Eval Print Loop).

Programiści zaznajomieni z tłumaczonymi językami poczują się komfortowo w tym środowisku wiersza poleceń, a nawet doświadczeni programiści znajdą kilka unikalnych funkcji

Uruchom Terminal.app, wpisz swift i naciśnij enter. Będziesz wtedy w 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>
Yogendra Singh
źródło