Wie kann ich Swift in Terminal verwenden?


108

Ich habe gelesen, was in Xcode 6 neu ist . Der Artikel stellt einige neue Funktionen zu Xcode 6 vor und lautet:

Befehlszeile

Der Debugger von Xcode enthält eine interaktive Version der Swift-Sprache, die als REPL (Read-Eval-Print-Loop) bekannt ist. Verwenden Sie die Swift-Syntax, um Ihre laufende App auszuwerten und mit ihr zu interagieren oder neuen Code in einer skriptähnlichen Umgebung zu schreiben. Die REPL ist in der LLDB in der Xcode-Konsole oder im Terminal verfügbar.

Ich möchte wissen, wie ich die REPL bekomme.


3
Hier ist ein Artikel, den ich darüber geschrieben habe. medium.com/swift-programming/…
Santosh

Sie können es auch online verwenden, wenn Sie repl.it/languages/swift
Amjad Masad

Antworten:


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

dann können Sie eine der folgenden Aktionen ausführen:

xcrun swift 
lldb --repl

Ab Xcode 6.1 wird durch Eingabe swiftdes Terminals auch die REPL gestartet.


2
... und um zu beenden, geben Sie Ctrl+ ein d.
Arve0

57

Wenn Sie Ihre aktuelle Entwicklungsumgebung nicht durcheinander bringen möchten, können Sie alternativ einfach Folgendes ausführen:

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

30
Oder Sie können sogar noch einen Schritt weiter gehen und dies zu Ihrem hinzufügen ~/.bash_profile:alias swift="/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift"
David Beck

6
Um das OS X SDK verwenden zu können, müssen Sie auch den Pfad dazu angeben:/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

Danke für die Idee David. Ich habe das dem Profil hinzugefügt, aber ich erhalte immer wieder keine solche Datei oder kein solches Verzeichnis, obwohl es genau dort ist und die Berechtigungen sind -rwxr-xr-x@ 1 mark2 admin 33557440 31 May 14:43 swift. Ich bin nicht so stark in der Einheit. Kann jemand sehen, was los ist?
MarkAurelius

Die Verwendung xcrun --find swift, um den Weg zu finden, wird viel zukunftssicherer sein
Mike Weller

1
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 swiftist viel besser. Ursprungsantwort hier: stackoverflow.com/a/36254848/5768974
Puttin

42

Schritt 1: Terminal öffnen
Schritt 2: Geben Sie "swift" ein.
Schritt 3: Es gibt keinen Schritt 3

Beispiel:

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$ 

Obwohl Sie weiterhin verwenden können xcrun swift, können Sie ab Swift 2.1 einfach swiftüber die Befehlszeile ausgeführt werden.
Timbo

Mein Beispiel stammt aus Swift 1.0 im Juli 2014. Es hat seitdem für mich ohne xcrun funktioniert.
MacMark

15

Auf die gleiche Weise wie beim Ausführen von Swift vom Terminal aus können Sie auch Skripts ausführen. Verwenden Sie einfach den folgenden Shebang und führen Sie Ihr Skript aus. ( Laut Chris Lattner , dem Schöpfer von Swift)

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

6
Gemäß XCode 6 Beta 5 wurde das -iFlag entfernt und führt zu einem Fehler. Lass es einfach los und benutze es #!/usr/bin/env xcrun swiftstattdessen.
Jeehut

Jeder, der mit Swift 2.3 in Xcode 8 spielen möchte, sollte stackoverflow.com/a/36254848/1298043
Puttin

15

In Xcode 6.1.1 mit installierten Befehlszeilentools können Sie Skripts ausführen, indem Sie direkt auf /usr/bin/swiftdie folgende Weise verweisen :

#!/usr/bin/swift

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

Bestätigen Sie, dass dies mit Swift 2.1.1 (Installation von Xcode 7.2) funktioniert
Thibaut Noah

1
Jeder, der mit Swift 2.3 in Xcode 8 spielen möchte, sollte stackoverflow.com/a/36254848/1298043
Puttin

10

Wenn sich jemand für ein einfaches Swift-Skript interessiert:

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

Wenn eine bestimmte Zielversion erforderlich ist

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

Wenn eine spezielle Toolchain erforderlich ist (wie Sie Swift 2.3 verwenden möchten, aber Xcode 8 verwenden)

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

Wenn Sie Swift 2.2 in Ihrem Xcode 7.3.1 verwenden möchten, nehmen wir an, dass sich Xcode 7.3.1 unter befindet /Applications/Xcode7.app

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

Von nun an wurde das standardmäßige aktive Entwicklerverzeichnis geändert. Sie können dies überprüfen, indem Sie:

xcode-select -p

Wenn Sie von Swift.org bereitgestellte Snapshots verwenden möchten , sollten Sie die Installation hier nicht verpassen .


wie zuerst von mir in Run Swift Script aus Xcode iOS Projekt als Build Phase beantwortet


8

** Update ab xcode6 Beta 4 **

Dies kann auch in den Xcode-Einstellungen erfolgen. Gehen Sie einfach zu xcode -> Einstellungen -> Standorte.

Wählen Sie für Befehlszeilentools einfach die gewünschte Version aus den Dropdown-Listenoptionen aus (siehe Abbildung unten). (schnell erfordert, dass der Pfad der Pfad von xcode6 ist).

Bildschirm der Befehlszeilen-Tools

Ich werde meine vorherige Antwort auch unten hinterlassen.


Was Kaan gesagt hat und Sie können auch ein Apple-Skript verwenden, um eine einfache Anwendung zu erstellen, damit Sie damit hin und her wechseln können.

Öffnen Sie das Apple-Skript> fügen Sie den folgenden Code ein und exportieren Sie ihn als Anwendung, sodass Sie mit nur einem Klick zum Standardpfad oder Beta-Pfad wechseln können (um Swift zu verwenden).

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

dann laufen> xcrun swift

Haftungsausschluss

  1. Das Skript setzt voraus, dass Sie sowohl xcode6-beta als auch xcode5 installiert haben.
  2. Wenn Sie ein neuer Entwickler sind, der nur xcode6beta ausprobiert, benötigen Sie kein Skript oder keinen manuellen Einstellungspfad. Führen Sie einfach aus, xcrun swiftda der Pfad bereits für Sie festgelegt wurde.
  3. Wenn xcode6 endlich veröffentlicht wird, müssen Sie Ihren Pfad von dieser einfachen App auf die Standardeinstellungen zurücksetzen und ihn nie wieder verwenden.

Ich hatte XCode 5 installiert und habe es jetzt auf XCode 6 "aktualisiert" (= ersetzt). Gibt es eine Möglichkeit, 5.x jetzt zurückzubringen? Mit dieser Lösung?
Matthias Max

Was meinst du mit 5.x zurückbringen? xcode6 GM oder Appstore Release ersetzt xcode5.
nsuinteger

6

Nach der Installation der offiziellen Xcode 6.1-Version gibt es einen swiftBefehl in /usr/bin/swift.

Beachten Sie, dass ein swiftFehler auftreten kann , wenn Sie einen anderen Python als den von Apple bereitgestellten Python im Pfad haben ImportError: No module named site. Stellen Sie in diesem Fall sicher, dass Sie dies tun, export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbinbevor Sie anrufen swift.


5

Der Befehl xcrun verwendet die Umgebungsvariable DEVELOPER_DIR, um die aktuell ausgewählte Xcode-Installation zu überschreiben (wie mit xcode-select festgelegt). Sie können dies verwenden, um einen einzelnen Befehl zu erstellen, der schnell in der Befehlszeile ausgeführt wird und Sie in die REPL einfügt. Das sieht so aus:

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

und Sie können das alias, um nur "schnell":

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

Als interessante Randnotiz können Sie dieselbe Art von Aufruf verwenden, um ein schnelles Skript auszuführen, genau wie Sie Bash oder Python verwenden würden, indem Sie ein -i hinzufügen:

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

println("Hello World!")

Sobald Xcode 6 offiziell veröffentlicht wurde und Sie als Standard-Entwicklertool zu diesem Code wechseln, können Sie natürlich die Bits DEVELOPER_DIR = .. löschen und einfach "xcrun swift" verwenden.


4

Stellen Sie sicher, dass Sie xcode 6.0 installieren , nicht jedoch 6.1

Wenn Sie eine Fehlermeldung erhalten:

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

Renn einfach

xcrun --sdk iphonesimulator8.0 swift

oder du kannst

export SDKROOT="iphonesimulator8.0" 

und dann

xcrun swift

Verwenden Sie " xcodebuild -showsdks", um die verfügbaren SDK-Namen aufzulisten.

Wenn Sie xcode 6.1 installieren , einfach

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

2

Führen Sie für XCode6 die folgenden Befehle aus:

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

$ xcrun swift

Wenn Sie eine Fehlermeldung erhalten:

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

Versuchen:

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

1

Terminal öffnen,

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

Hinweis: Das Xcode6-Beta6.appsollte durch die entsprechende Version ersetzt werden, die Sie installiert haben

Dann setzen Sie diese Zeile alias swift='xcrun swift'auf~/.bash_profile

Und,

$source ~/.bash_profile

$swift

Los geht's!


1

Mit Hilfe von Swift REPL (Read Eval Print Loop).

Entwickler, die mit interpretierten Sprachen vertraut sind, werden sich in dieser Befehlszeilenumgebung wohl fühlen, und selbst erfahrene Entwickler werden einige einzigartige Funktionen finden

Starten Sie Terminal.app, geben Sie swift ein und drücken Sie die Eingabetaste. Sie befinden sich dann in der 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>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.