¿Cómo puedo usar swift en Terminal?


108

Leí Novedades de Xcode 6 . El artículo presenta algunas características nuevas sobre Xcode 6 y dice:

Línea de comando

El depurador de Xcode incluye una versión interactiva del lenguaje Swift, conocido como REPL (Read-Eval-Print-Loop). Utilice la sintaxis Swift para evaluar e interactuar con su aplicación en ejecución o escribir código nuevo en un entorno similar a un script. El REPL está disponible desde LLDB en la consola de Xcode o desde Terminal.

¿Quiero saber cómo obtener el REPL?


3
Aquí hay un artículo que escribí sobre esto. medium.com/swift-programming/…
— Santosh

También puede usarlo en línea si le gusta repl.it/languages/swift
— Amjad Masad

Respuestas:


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

entonces puedes hacer uno de estos:

xcrun swift 
lldb --repl

A partir de Xcode 6.1, al escribir swiften la terminal también se inicia el REPL.


2
... y para salir, escriba Ctrl+ d.
— arve0

57

Alternativamente, si no desea estropear su entorno de desarrollo actual, puede ejecutar:

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

30
O incluso podría dar un paso más y agregar esto a su ~/.bash_profile:alias swift="/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift"
— David Beck

6
Para poder usar OS X SDK, también debe especificar la ruta:/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

Gracias por la idea David. Agregué eso al perfil, pero sigo obteniendo No tal archivo o directorio, a pesar de que está allí, y los permisos están -rwxr-xr-x@ 1 mark2 admin 33557440 31 May 14:43 swift. No soy tan fuerte en unidad. ¿Alguien puede ver lo que está mal?
— MarkAurelius

Usar xcrun --find swiftpara obtener el camino será mucho más a prueba de futuro
— Mike Weller

1
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 swiftes mucho mejor. Respuesta de origen aquí: stackoverflow.com/a/36254848/5768974
— Puttin

42

Paso 1: Abra la terminal
Paso 2: Escriba "swift"
Paso 3: No hay paso 3

Ejemplo:

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$ 

Aunque puede seguir utilizándolo xcrun swift, desde Swift 2.1 en adelante, simplemente puede ejecutarlo swiftdesde la línea de comandos.
— timbo

Mi ejemplo es de Swift 1.0 en julio de 2014. Estuvo funcionando sin xcrun desde siempre para mí.
— MacMark

15

De la misma manera que ejecuta Swift desde la Terminal, también puede ejecutar scripts. Simplemente use el siguiente shebang y ejecute su script. ( Según Chris Lattner , creador de Swift)

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

6
Según XCode 6 Beta 5, la -ibandera se ha eliminado y provocará un error. Déjelo ir y úselo #!/usr/bin/env xcrun swiften su lugar.
— Jeehut

Cualquiera que quiera jugar con Swift 2.3 en Xcode 8 no debe perderse stackoverflow.com/a/36254848/1298043
— Puttin

15

En Xcode 6.1.1 con las herramientas de línea de comandos instaladas, puede ejecutar scripts haciendo referencia directamente a /usr/bin/swiftla siguiente forma:

#!/usr/bin/swift

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

Confirme que esto funciona con swift 2.1.1 (instalación de xcode 7.2)
— thibaut noah

1
Cualquiera que quiera jugar con Swift 2.3 en Xcode 8 no debe perderse stackoverflow.com/a/36254848/1298043
— Puttin

10

Si a alguien le importa un simple guión Swift:

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

Si se requiere una versión de destino específica

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

Si se requiere una cadena de herramientas específica (como si desea usar Swift 2.3 pero está usando Xcode 8)

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

Si desea utilizar Swift 2.2 en su Xcode 7.3.1, supongamos que Xcode 7.3.1 se encuentra en /Applications/Xcode7.app

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

a partir de ahora, el directorio de desarrollador activo predeterminado cambió, puede verificarlo usando:

xcode-select -p

Si desea utilizar instantáneas proporcionadas por Swift.org , no debe perderse la instalación aquí .


como respondí por primera vez en Ejecutar script rápido del proyecto Xcode iOS como fase de compilación


8

** actualización a partir de xcode6 beta 4 **

esto también se puede hacer en las preferencias de xcode. simplemente vaya a xcode -> preferencias -> ubicaciones.

para las herramientas de línea de comandos, simplemente seleccione la versión que desee de las opciones de la lista desplegable, consulte la imagen a continuación. (Swift requiere que la ruta sea la ruta de xcode6).

pantalla de herramientas de línea de comandos

Dejaré mi respuesta anterior a continuación también.


lo que dijo Kaan y también puede usar un script de Apple para hacer una aplicación simple para que pueda usarla para alternar.

abra el script de Apple> pegue este código a continuación y expórtelo como una aplicación para que con solo un clic pueda cambiar a la ruta predeterminada o la ruta beta (para usar 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

luego ejecuta> xcrun swift

Descargo de responsabilidad

  1. el script asume que tiene instalados xcode6-beta y xcode5.
  2. Si es un desarrollador nuevo que está probando solo xcode6beta, no necesitará ningún script o ruta de configuración manualmente. simplemente ejecute xcrun swiftya que la ruta ya está establecida para usted.
  3. cuando finalmente se lance xcode6, deberá restablecer su ruta a la predeterminada desde esta aplicación simple y nunca volver a usarla.

Tenía XCode 5 instalado y ahora lo he "actualizado" (= reemplazado) a XCode 6. ¿Hay alguna manera de recuperar 5.x ahora? ¿Con esta solución?
— Matthias Max

¿Qué quieres decir con traer de vuelta 5.x? xcode6 GM o la versión de la tienda de aplicaciones reemplazarán a xcode5.
— nsuinteger

6

Después de instalar la versión oficial de Xcode 6.1, hay un swiftcomando en /usr/bin/swift.

Tenga en cuenta que si tiene un Python diferente del Python proporcionado por Apple en la ruta, swiftpuede fallar con ImportError: No module named site. En ese caso, asegúrese de hacerlo export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbinantes de llamar swift.


5

El comando xcrun usará la variable de entorno DEVELOPER_DIR para anular la instalación de Xcode actualmente seleccionada (como se establece con xcode-select). Puede usar eso para construir un solo comando que se ejecutará rápidamente en la línea de comando y lo colocará en el REPL. Eso se ve así:

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

y puedes alias eso simplemente 'rápido':

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

Como nota al margen interesante, puede usar el mismo tipo de invocación para ejecutar un script rápido como usaría bash o python agregando un -i:

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

println("Hello World!")

Por supuesto, una vez que Xcode 6 sea lanzado oficialmente y cambie a eso como sus herramientas de desarrollador predeterminadas, puede eliminar los bits DEVELOPER_DIR = .. y simplemente usar "xcrun swift".


4

asegúrese de instalar xcode 6.0 , pero no 6.1

Si recibe un error:

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

solo corre

xcrun --sdk iphonesimulator8.0 swift

o tu puedes

export SDKROOT="iphonesimulator8.0" 

y entonces

xcrun swift

Utilice " xcodebuild -showsdks" para enumerar los nombres de SDK disponibles.

si instala xcode 6.1 , simplemente

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

2

Para XCode6, ejecute estos comandos:

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

$ xcrun swift

Si recibe un error:

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

tratar:

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

1

terminal abierta

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

Aviso: La Xcode6-Beta6.appconviene sustituir a la versión apropiada que ha instalado

Entonces pon esta línea alias swift='xcrun swift'a~/.bash_profile

Y,

PSsource ~/.bash_profile

PSswift

¡Ahí tienes!


1

Con la ayuda de Swift REPL (Read Eval Print Loop).

Los desarrolladores familiarizados con los lenguajes interpretados se sentirán cómodos en este entorno de línea de comandos, e incluso los desarrolladores experimentados encontrarán algunas características únicas.

Inicie Terminal.app, escriba swift y presione enter. Entonces estarás en 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>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.