Come posso usare swift in Terminal?


108

Ho letto Novità di Xcode 6 . L'articolo introduce alcune nuove funzionalità su Xcode 6 e dice:

Riga di comando

Il debugger di Xcode include una versione interattiva del linguaggio Swift, noto come REPL (Read-Eval-Print-Loop). Usa la sintassi Swift per valutare e interagire con la tua app in esecuzione o scrivere nuovo codice in un ambiente simile a uno script. Il REPL è disponibile dall'interno di LLDB nella console di Xcode o da Terminal.

Voglio sapere come ottenere il REPL?


3
Ecco un articolo che ho scritto su questo argomento. medium.com/swift-programming/…
Santosh

Puoi anche usarlo online se ti piace repl.it/languages/swift
Amjad Masad

Risposte:


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

allora puoi fare uno di questi:

xcrun swift 
lldb --repl

A partire da Xcode 6.1, digitando swiftnel terminale viene avviato anche il REPL.


2
... e per uscire, digita Ctrl+ d.
arve0

57

In alternativa, se non vuoi rovinare il tuo attuale ambiente di sviluppo, puoi semplicemente eseguire:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift

30
Oppure potresti anche fare un ulteriore passo avanti e aggiungerlo al tuo ~/.bash_profile:alias swift="/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift"
David Beck

6
Per poter utilizzare OS X SDK devi specificare anche il percorso:/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

Grazie per l'idea David. L'ho aggiunto al profilo, ma continuo a ricevere Nessun file o directory di questo tipo, anche se è proprio lì e le autorizzazioni sono -rwxr-xr-x@ 1 mark2 admin 33557440 31 May 14:43 swift. Non sono così forte nell'unità. Qualcuno può vedere cosa c'è che non va?
MarkAurelius

Usare xcrun --find swiftper ottenere il percorso sarà molto più a prova di futuro
Mike Weller

1
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 swiftè molto meglio. Risposta di origine qui: stackoverflow.com/a/36254848/5768974
Puttin

42

Passaggio 1: apri il terminale
Passaggio 2: digita "swift"
Passaggio 3: non è presente alcun passaggio 3

Esempio:

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$ 

Sebbene tu possa continuare a utilizzare xcrun swift, da Swift 2.1 in poi puoi semplicemente eseguire swiftdalla riga di comando.
timbo

Il mio esempio è di Swift 1.0 nel luglio 2014. Per me funzionava da sempre senza xcrun.
MacMark

15

Allo stesso modo dell'esecuzione di Swift dal Terminale, puoi anche eseguire script. Usa semplicemente il seguente schema ed esegui lo script. ( Secondo Chris Lattner , creatore di Swift)

#!/usr/bin/env xcrun swift -i

6
Come per XCode 6 Beta 5 il -iflag è stato rimosso e porterà ad un errore. Lascialo andare e usa #!/usr/bin/env xcrun swiftinvece.
Jeehut

Chiunque voglia giocare con Swift 2.3 in Xcode 8 non dovrebbe perdere stackoverflow.com/a/36254848/1298043
Puttin

15

In Xcode 6.1.1 con gli strumenti della riga di comando installati è possibile eseguire gli script facendo riferimento direttamente al /usr/bin/swiftmodo seguente:

#!/usr/bin/swift

let variable: String = "string"
print("Test \(variable)")

Conferma che funzioni con swift 2.1.1 (installazione di xcode 7.2)
thibaut noah

1
Chiunque voglia giocare con Swift 2.3 in Xcode 8 non dovrebbe perdere stackoverflow.com/a/36254848/1298043
Puttin

10

Se a qualcuno interessa un semplice script Swift:

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

Se è richiesta una versione di destinazione specifica

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

Se è richiesta una toolchain specifica (come se volessi usare Swift 2.3 ma stai usando Xcode 8)

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

Se vuoi usare Swift 2.2 nel tuo Xcode 7.3.1, supponiamo che Xcode 7.3.1 si trovi in /Applications/Xcode7.app

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

d'ora in poi la directory predefinita dello sviluppatore attivo è cambiata, puoi verificarla utilizzando:

xcode-select -p

Se desideri utilizzare le istantanee fornite da Swift.org , non perdere l' installazione qui .


come prima risposta da me in Esegui script rapido dal progetto Xcode iOS come fase di compilazione


8

** aggiornamento a partire da xcode6 beta 4 **

questo può essere fatto anche sulle preferenze di xcode. vai semplicemente su xcode -> preferenze -> posizioni.

per gli strumenti da riga di comando selezionare semplicemente la versione desiderata dalle opzioni dell'elenco a discesa, fare riferimento all'immagine sottostante. (swift richiede che il percorso sia il percorso di xcode6).

schermata degli strumenti della riga di comando

Lascerò anche la mia risposta precedente di seguito.


quello che ha detto Kaan e puoi anche usare uno script Apple per creare un'applicazione semplice in modo da poterlo utilizzare per passare avanti e indietro.

apri lo script Apple> incolla questo codice sotto ed esportalo come un'applicazione, quindi con un solo clic puoi passare al percorso predefinito o al percorso beta (per usare 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

quindi esegui> xcrun swift

disconoscimento

  1. lo script presuppone che siano installati sia xcode6-beta che xcode5.
  2. se sei un nuovo sviluppatore che sta provando solo xcode6beta non avrai bisogno di alcuno script o percorso di impostazione manualmente. semplicemente corrixcrun swift poiché il percorso è già impostato per te.
  3. quando xcode6 verrà finalmente rilasciato, sarà necessario ripristinare il percorso predefinito da questa semplice app e non utilizzarlo mai più.

Avevo installato XCode 5 e ora l'ho "aggiornato" (= sostituito) a XCode 6. C'è un modo per riportare 5.x adesso? Con questa soluzione?
Matthias Max

cosa intendi riportare 5.x? xcode6 La versione GM o appstore sostituirà xcode5.
nsuinteger

6

Dopo aver installato la versione ufficiale di Xcode 6.1, c'è un swiftcomando in /usr/bin/swift.

Tieni presente che se hai un Python diverso dal Python fornito da Apple nel percorso, swiftpuò fallire con ImportError: No module named site. In tal caso, assicurati di farlo export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbinprima di chiamare swift.


5

Il comando xcrun utilizzerà la variabile d'ambiente DEVELOPER_DIR per sovrascrivere l'installazione di Xcode attualmente selezionata (come impostato con xcode-select). Puoi usarlo per costruire un singolo comando che verrà eseguito rapidamente sulla riga di comando e ti metterà nella REPL. Assomiglia a questo:

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

e puoi alias semplicemente "swift":

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

Come nota a margine interessante, puoi utilizzare lo stesso tipo di invocazione per eseguire uno script rapido proprio come useresti bash o python aggiungendo -i:

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

println("Hello World!")

Ovviamente, una volta che Xcode 6 è stato rilasciato ufficialmente e si passa a quello come strumenti di sviluppo predefiniti, è possibile rilasciare DEVELOPER_DIR = .. bit e utilizzare semplicemente "xcrun swift".


4

assicurati di installare xcode 6.0 , ma non 6.1

Se ricevi un errore:

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

corri

xcrun --sdk iphonesimulator8.0 swift

o puoi

export SDKROOT="iphonesimulator8.0" 

e poi

xcrun swift

Uso "xcodebuild -showsdks " per elencare i nomi SDK disponibili.

se installi xcode 6.1 , basta

sudo xcode-select -s /Applications/*your-Xcode-6.1-path.app*/Contents/Developer
xcrun swift

2

Per XCode6, esegui questi comandi:

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

$ xcrun swift

Se ricevi un errore:

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

provare:

xcrun swift -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk

1

terminale aperto,

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

Avviso: ilXcode6-Beta6.app dovrebbe essere sostituito alla versione appropriata installato

Quindi metti questa linea alias swift='xcrun swift' a~/.bash_profile

E,

$source ~/.bash_profile

$swift

Ecco qua!


1

Con l'aiuto di Swift REPL (Read Eval Print Loop).

Gli sviluppatori che hanno familiarità con i linguaggi interpretati si sentiranno a proprio agio in questo ambiente a riga di comando e anche gli sviluppatori esperti troveranno alcune funzionalità uniche

Avvia Terminal.app e digita swift e premi invio. Sarai quindi in 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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.