Comment puis-je utiliser Swift dans Terminal?


108

J'ai lu les nouveautés de Xcode 6 . L'article présente une nouvelle fonctionnalité sur Xcode 6, et il dit:

Ligne de commande

Le débogueur de Xcode inclut une version interactive du langage Swift, connue sous le nom de REPL (Read-Eval-Print-Loop). Utilisez la syntaxe Swift pour évaluer et interagir avec votre application en cours d'exécution ou écrire un nouveau code dans un environnement de type script. Le REPL est disponible depuis LLDB dans la console Xcode, ou depuis Terminal.

Je veux savoir comment obtenir la REPL?


3
Voici un article que j'ai écrit à ce sujet. medium.com/swift-programming/…
Santosh

Vous pouvez également l'utiliser en ligne si vous aimez repl.it/languages/swift
Amjad Masad

Réponses:


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

alors vous pouvez faire l'un de ceux-ci:

xcrun swift 
lldb --repl

Depuis Xcode 6.1 - taper swiftdans le terminal lance également le REPL.


2
... et pour quitter, tapez Ctrl+ d.
arve0

57

Sinon, si vous ne voulez pas gâcher votre environnement de développement actuel, vous pouvez simplement exécuter:

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

30
Ou, vous pouvez même aller plus loin et ajouter ceci à votre ~/.bash_profile:alias swift="/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift"
David Beck

6
Pour pouvoir utiliser le SDK OS X, vous devez également spécifier le chemin d'accès:/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

Merci pour l'idée David. J'ai ajouté cela au profil, mais je n'arrête pas de recevoir un tel fichier ou répertoire, même s'il est juste là, et les autorisations sont -rwxr-xr-x@ 1 mark2 admin 33557440 31 May 14:43 swift. Je ne suis pas si fort en unité. Quelqu'un peut-il voir ce qui ne va pas?
MarkAurelius

Utiliser xcrun --find swiftpour obtenir le chemin sera beaucoup plus à l'épreuve du temps
Mike Weller

1
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 swiftc'est bien mieux. Réponse d'origine ici: stackoverflow.com/a/36254848/5768974
Puttin

42

Étape 1: ouvrez le terminal
Étape 2: tapez «swift»
Étape 3: Il n'y a pas d'étape 3

Exemple:

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$ 

Bien que vous puissiez continuer à utiliser xcrun swift, à partir de Swift 2.1, vous pouvez simplement exécuter à swiftpartir de la ligne de commande.
timbo

Mon exemple vient de Swift 1.0 en juillet 2014. Il fonctionnait depuis toujours sans xcrun pour moi.
MacMark

15

De la même manière que pour exécuter Swift à partir du terminal, vous pouvez également exécuter des scripts. Utilisez simplement le shebang suivant et exécutez votre script. ( Selon Chris Lattner , créateur de Swift)

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

6
Selon XCode 6 Beta 5, l' -iindicateur a été supprimé et entraînera une erreur. Laissez-le aller et utilisez à la #!/usr/bin/env xcrun swiftplace.
Jeehut

Quiconque veut jouer avec Swift 2.3 dans Xcode 8 ne devrait pas manquer stackoverflow.com/a/36254848/1298043
Puttin le

15

Dans Xcode 6.1.1 avec les outils de ligne de commande installés, vous pouvez exécuter des scripts en vous référant directement à /usr/bin/swiftla manière suivante:

#!/usr/bin/swift

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

Confirmez cette travailler avec rapide 2.1.1 (Xcode 7.2 installer)
thibaut noé

1
Quiconque veut jouer avec Swift 2.3 dans Xcode 8 ne devrait pas manquer stackoverflow.com/a/36254848/1298043
Puttin le

10

Si quelqu'un se soucie d'un simple script Swift:

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

Si une version cible spécifique est requise

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

Si une chaîne d'outils spécifique est requise (comme si vous souhaitez utiliser Swift 2.3 mais que vous utilisez Xcode 8)

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

Si vous souhaitez utiliser Swift 2.2 dans votre Xcode 7.3.1, supposons que Xcode 7.3.1 se trouve à /Applications/Xcode7.app

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

à partir de maintenant, le répertoire actif par défaut des développeurs a changé, vous pouvez le vérifier en utilisant:

xcode-select -p

Si vous souhaitez utiliser des instantanés fournis par Swift.org , vous ne devriez pas manquer l' installation ici .


comme je l'ai d'abord répondu dans Exécuter le script rapide du projet Xcode iOS en tant que phase de construction


8

** mise à jour à partir de xcode6 beta 4 **

cela peut également être fait sur les préférences de xcode. allez simplement dans xcode -> préférences -> emplacements.

pour les outils de ligne de commande, sélectionnez simplement la version souhaitée dans les options de la liste déroulante, reportez-vous à l'image ci-dessous. (swift nécessite que le chemin soit le chemin de xcode6).

écran des outils de ligne de commande

Je laisserai également ma réponse précédente ci-dessous.


ce que Kaan a dit et vous pouvez également utiliser un script Apple pour créer une application simple afin que vous puissiez l'utiliser pour basculer entre les deux.

ouvrez le script Apple> collez ce code ci-dessous et exportez-le en tant qu'application pour pouvoir passer au chemin par défaut ou au chemin bêta (pour utiliser swift) en un seul clic

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

puis lancez> xcrun swift

avertissement

  1. le script suppose que vous avez installé à la fois xcode6-beta et xcode5.
  2. si vous êtes un nouveau développeur qui n'essaie que xcode6beta, vous n'aurez besoin d'aucun script ou chemin de configuration manuellement. exécutez simplement xcrun swiftcar le chemin est déjà défini pour vous.
  3. lorsque xcode6 est enfin publié, vous devrez réinitialiser votre chemin par défaut à partir de cette application simple et ne plus jamais l'utiliser.

J'ai installé XCode 5 et j'ai maintenant "mis à jour" (= remplacé) XCode 6. Y a-t-il un moyen de ramener 5.x maintenant? Avec cette solution?
Matthias Max

que voulez-vous dire ramener 5.x? xcode6 GM ou la version Appstore remplacera xcode5.
nsuinteger

6

Après avoir installé la version officielle Xcode 6.1, il existe un swift commande dans /usr/bin/swift.

Gardez à l'esprit que si vous avez un Python différent du Python fourni par Apple dans le chemin, swiftpeut échouer avec ImportError: No module named site. Dans ce cas, assurez-vous de le faire export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbinavant d'appeler swift.


5

La commande xcrun utilisera la variable d'environnement DEVELOPER_DIR pour remplacer l'installation Xcode actuellement sélectionnée (comme défini avec xcode-select). Vous pouvez l'utiliser pour construire une seule commande qui s'exécutera rapidement sur la ligne de commande et vous placera dans la REPL. Cela ressemble à ceci:

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

et vous pouvez alias cela pour simplement «rapide»:

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

En guise de remarque intéressante, vous pouvez utiliser le même type d'invocation pour exécuter un script rapide, tout comme vous utiliseriez bash ou python en ajoutant un -i:

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

println("Hello World!")

Bien sûr, une fois que Xcode 6 est officiellement publié et que vous passez à cela comme outil de développement par défaut, vous pouvez supprimer les bits DEVELOPER_DIR = .. et simplement utiliser "xcrun swift".


4

assurez-vous d'installer xcode 6.0 , mais pas 6.1

Si vous obtenez une erreur:

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

cours juste

xcrun --sdk iphonesimulator8.0 swift

ou tu peux

export SDKROOT="iphonesimulator8.0" 

puis

xcrun swift

Utilisez " xcodebuild -showsdks" pour répertorier les noms de SDK disponibles.

si vous installez xcode 6.1 , il suffit

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

2

Pour XCode6, exécutez ces commandes:

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

$ xcrun swift

Si vous obtenez une erreur:

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

essayer:

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

1

Terminal ouvert,

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

Remarque: le Xcode6-Beta6.appdoit être remplacé par la version appropriée que vous avez installée

Ensuite, mettez cette ligne alias swift='xcrun swift'à~/.bash_profile

Et,

$source ~/.bash_profile

$swift

Voilà!


1

Avec l'aide de Swift REPL (Read Eval Print Loop).

Les développeurs familiers avec les langages interprétés se sentiront à l'aise dans cet environnement de ligne de commande, et même les développeurs expérimentés trouveront quelques fonctionnalités uniques

Lancez Terminal.app et tapez swift et appuyez sur Entrée. Vous serez alors dans le REPL Swift.

        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>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.