Como posso usar o swift no Terminal?

108

Eu li o que há de novo no Xcode 6 . O artigo apresenta alguns novos recursos sobre o Xcode 6 e diz:

Linha de comando

O depurador do Xcode inclui uma versão interativa da linguagem Swift, conhecida como REPL (Read-Eval-Print-Loop). Use a sintaxe Swift para avaliar e interagir com seu aplicativo em execução ou escrever um novo código em um ambiente semelhante a um script. O REPL está disponível no LLDB no console do Xcode ou no Terminal.

Quero saber como obter o REPL?

rasgado
fonte
3
Aqui está um artigo que escrevi sobre isso. medium.com/swift-programming/…
Santosh
Você também pode usá-lo on-line se quiser repl.it/languages/swift
Amjad Masad

Respostas:

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

então você pode fazer um destes:

xcrun swift 
lldb --repl

A partir do Xcode 6.1 - digitar swiftno terminal também inicia o REPL.

Kaan Dedeoglu
fonte
2
... e para sair, digite Ctrl+ d.
arve0
57

Como alternativa, se você não quiser bagunçar seu ambiente de desenvolvimento atual, basta executar:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
Sebastien Windal
fonte
30
Ou você pode dar um passo adiante e adicionar ao seu ~/.bash_profile:alias swift="/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift"
David Beck
6
Para poder usar o OS X SDK, você também deve especificar o caminho para ele:/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
Obrigado pela ideia David. Eu adicionei isso ao perfil, mas continuo recebendo Nenhum arquivo ou diretório, embora ele esteja lá e as permissões estejam -rwxr-xr-x@ 1 mark2 admin 33557440 31 May 14:43 swift. Não sou tão forte na unidade. Alguém pode ver o que está errado?
MarkAurelius
Usar xcrun --find swiftpara obter o caminho será muito mais à prova de futuro
Mike Weller
1
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 swifté muito mais melhor. Origem da resposta aqui: stackoverflow.com/a/36254848/5768974
Puttin
42

Etapa 1: Abra o Terminal
Etapa 2: Digite "swift"
Etapa 3: não há etapa 3

Exemplo:

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
fonte
Embora você possa continuar a usar xcrun swift, do Swift 2.1 em diante, você pode simplesmente executar a swiftpartir da linha de comando.
timbó
Meu exemplo é do Swift 1.0 em julho de 2014. Estava funcionando sem xcrun desde sempre para mim.
MacMark
15

Da mesma forma que executar o Swift no Terminal, você também pode executar scripts. Basta usar o seguinte shebang e executar seu script. ( De acordo com Chris Lattner , criador do Swift)

#!/usr/bin/env xcrun swift -i
johankj
fonte
6
De acordo com o XCode 6 Beta 5, o -isinalizador foi removido e levará a um erro. Basta deixá-lo ir e usar em seu #!/usr/bin/env xcrun swiftlugar.
Jeehut
Quem quiser jogar com o Swift 2.3 no Xcode 8 não deve perder stackoverflow.com/a/36254848/1298043
Puttin
15

No Xcode 6.1.1 com ferramentas de linha de comando instaladas, você pode executar scripts fazendo referência direta à /usr/bin/swiftseguinte maneira:

#!/usr/bin/swift

let variable: String = "string"
print("Test \(variable)")
Markus Rautopuro
fonte
Confirme que está funcionando com o swift 2.1.1 (instalação do xcode 7.2)
thibaut noah
1
Quem quiser jogar com o Swift 2.3 no Xcode 8 não deve perder stackoverflow.com/a/36254848/1298043
Puttin
10

Se alguém se importa com um simples script Swift:

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

Se a versão de destino específica for necessária

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

Se um conjunto de ferramentas específico for necessário (como você deseja usar o Swift 2.3, mas está usando o Xcode 8)

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

Se você quiser usar o Swift 2.2 em seu Xcode 7.3.1, vamos assumir que o Xcode 7.3.1 está localizado em /Applications/Xcode7.app

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

a partir de agora, o diretório de desenvolvedor ativo padrão alterado, você pode verificar isso usando:

xcode-select -p

Se você deseja usar instantâneos fornecidos por Swift.org , não perca a instalação aqui .


como primeiro respondido por mim em Executar script swift do projeto Xcode iOS como fase de construção

Puttin
fonte
8

** atualização a partir de xcode6 beta 4 **

isso também pode ser feito nas preferências do xcode. simplesmente vá para xcode -> preferências -> locais.

para ferramentas de linha de comando, simplesmente selecione a versão desejada nas opções da lista suspensa, consulte a imagem abaixo. (swift requer que o caminho seja o caminho do xcode6).

tela de ferramentas de linha de comando

Vou deixar minha resposta anterior abaixo também.


o que Kaan disse e você também pode usar um script da apple para fazer um aplicativo simples para que você possa usá-lo para alternar.

abra o apple script> cole o código abaixo e exporte-o como um aplicativo para que com apenas um clique você possa alternar para o caminho padrão ou beta (para usar o 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

então corra> xcrun swift

aviso Legal

  1. o script assume que você tem o xcode6-beta e o xcode5 instalados.
  2. se você for um novo desenvolvedor que está experimentando apenas o xcode6beta, não precisará de nenhum script ou configuração de caminho manualmente. simplesmente corraxcrun swift pois o caminho já está definido para você.
  3. quando o xcode6 for finalmente lançado, você precisará redefinir seu caminho de volta ao padrão a partir deste aplicativo simples e nunca mais usá-lo.
nsuinteger
fonte
Eu tinha o XCode 5 instalado e agora "atualizei" (= substituído) para o XCode 6. Existe uma maneira de trazer de volta o 5.x agora? Com essa solução?
Matthias Max
o que você quer dizer com trazer de volta 5.x? O xcode6 GM ou a versão do appstore substituirá o xcode5.
nsuinteger
6

Depois de instalar a versão oficial do Xcode 6.1, há um swiftcomando em/usr/bin/swift .

Tenha em mente que, se você tiver um Python diferente do Python fornecido pela Apple no caminho, swiftpode falhar ImportError: No module named site. Nesse caso, certifique-se de fazer isso export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbinantes de ligar swift.

Juandesant
fonte
5

O comando xcrun usará a variável de ambiente DEVELOPER_DIR para substituir a instalação do Xcode atualmente selecionada (conforme definido com xcode-select). Você pode usar isso para construir um único comando que será executado rapidamente na linha de comando e o colocará no REPL. Isso se parece com isto:

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

e você pode alias para apenas 'rápido':

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

Como uma observação interessante, você pode usar o mesmo tipo de invocação para executar um script rápido, assim como usaria bash ou python adicionando um -i:

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

println("Hello World!")

Claro, assim que o Xcode 6 for lançado oficialmente e você mudar para ele como suas ferramentas de desenvolvedor padrão, você pode descartar os bits DEVELOPER_DIR = .. e apenas usar "xcrun swift".

Jay Lyerly
fonte
4

certifique-se de instalar o xcode 6.0 , mas não 6.1

Se você receber um erro:

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

apenas corra

xcrun --sdk iphonesimulator8.0 swift

ou você pode

export SDKROOT="iphonesimulator8.0" 

e depois

xcrun swift

Usar "xcodebuild -showsdks " para listar os nomes SDK disponíveis.

se você instalar o xcode 6.1 , apenas

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

Para XCode6, execute estes comandos:

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

$ xcrun swift

Se você receber um erro:

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

experimentar:

xcrun swift -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
Vinicius miana
fonte
1

Terminal aberto,

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

Aviso: OXcode6-Beta6.app deve ser substituído pela versão apropriada que você instalou

Então coloque esta linha alias swift='xcrun swift'para~/.bash_profile

E,

$source ~/.bash_profile

$swift

Ai está!

Johnny Zhao
fonte
1

Com a ajuda de Swift REPL (Read Eval Print Loop).

Os desenvolvedores familiarizados com linguagens interpretadas se sentirão confortáveis ​​neste ambiente de linha de comando, e até mesmo os desenvolvedores experientes encontrarão alguns recursos exclusivos

Abra Terminal.app, digite swift e pressione Enter. Você estará então no 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
fonte