Bagaimana saya bisa menggunakan swift di Terminal?

108

Saya membaca Yang baru di Xcode 6 . Artikel tersebut memperkenalkan beberapa fitur baru tentang Xcode 6, dan dikatakan:

Garis komando

Debugger Xcode menyertakan versi interaktif dari bahasa Swift, yang dikenal sebagai REPL (Read-Eval-Print-Loop). Gunakan sintaks Swift untuk mengevaluasi dan berinteraksi dengan aplikasi Anda yang sedang berjalan atau menulis kode baru dalam lingkungan seperti skrip. REPL tersedia dari dalam LLDB di konsol Xcode, atau dari Terminal.

Saya ingin tahu bagaimana cara mendapatkan REPL?

terbelah
sumber
3
Ini adalah artikel yang saya tulis, tentang ini. medium.com/swift-programming/…
Santosh
Anda juga dapat menggunakannya secara online jika Anda suka repl.it/languages/swift
Amjad Masad

Jawaban:

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

maka Anda dapat melakukan salah satu dari ini:

xcrun swift 
lldb --repl

Pada Xcode 6.1 - mengetik swiftdi terminal meluncurkan REPL juga.

Kaan Dedeoglu
sumber
2
... dan untuk berhenti, ketik Ctrl+ d.
arve0
57

Atau, jika Anda tidak ingin mengacaukan lingkungan dev Anda saat ini, Anda dapat menjalankan:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
Sebastien Windal
sumber
30
Atau, Anda bahkan dapat mengambil satu langkah lebih jauh dan menambahkan ini ke ~/.bash_profile:alias swift="/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift"
David Beck
6
Untuk dapat menggunakan OS X SDK, Anda harus menentukan jalurnya juga:/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
Terima kasih atas idenya David. Saya menambahkannya ke profil, tetapi saya tetap tidak mendapatkan file atau direktori seperti itu, meskipun file atau direktori itu ada di sana, dan izinnya ada -rwxr-xr-x@ 1 mark2 admin 33557440 31 May 14:43 swift. Aku tidak sekuat itu dalam kesatuan. Adakah yang bisa melihat apa yang salah?
MarkAurelius
Menggunakan xcrun --find swiftuntuk mendapatkan jalannya akan menjadi bukti masa depan yang jauh lebih
Mike Weller
1
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 swiftjauh lebih baik. Jawaban asal di sini: stackoverflow.com/a/36254848/5768974
Puttin
42

Langkah 1: Buka Terminal
Langkah 2: Ketik "swift"
Langkah 3: Tidak ada langkah 3

Contoh:

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
sumber
Meskipun Anda dapat terus menggunakan xcrun swift, mulai dari Swift 2.1 dan seterusnya, Anda cukup menjalankan swiftdari baris perintah.
timbo
Contoh saya adalah dari Swift 1.0 pada Juli 2014. Ia bekerja tanpa xcrun sejak itu untuk saya.
MacMark
15

Dengan cara yang sama seperti menjalankan Swift dari Terminal, Anda juga dapat menjalankan skrip. Cukup gunakan shebang berikut, dan jalankan skrip Anda. ( Sesuai Chris Lattner , pencipta Swift)

#!/usr/bin/env xcrun swift -i
johankj
sumber
6
Sesuai XCode 6 Beta 5, -ibendera telah dihapus dan akan menyebabkan kesalahan. Biarkan saja dan gunakan #!/usr/bin/env xcrun swiftsaja.
Jeehut
Siapa pun yang ingin bermain dengan Swift 2.3 di Xcode 8 tidak boleh melewatkan stackoverflow.com/a/36254848/1298043
Puttin
15

Di Xcode 6.1.1 dengan Alat Baris Perintah terinstal, Anda dapat menjalankan skrip dengan merujuk langsung ke /usr/bin/swiftcara berikut:

#!/usr/bin/swift

let variable: String = "string"
print("Test \(variable)")
Markus Rautopuro
sumber
Konfirmasikan ini untuk bekerja dengan swift 2.1.1 (xcode 7.2 install)
thibaut noah
1
Siapa pun yang ingin bermain dengan Swift 2.3 di Xcode 8 tidak boleh melewatkan stackoverflow.com/a/36254848/1298043
Puttin
10

Jika ada yang peduli shebang skrip Swift sederhana:

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

Jika versi target tertentu diperlukan

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

Jika toolchain tertentu diperlukan (seperti Anda ingin menggunakan Swift 2.3 tetapi Anda menggunakan Xcode 8)

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

Jika Anda ingin menggunakan Swift 2.2 di Xcode 7.3.1 Anda, anggaplah Xcode 7.3.1 berada di /Applications/Xcode7.app

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

mulai sekarang direktori pengembang aktif default diubah, Anda dapat memeriksanya menggunakan:

xcode-select -p

Jika Anda ingin menggunakan snapshot yang disediakan oleh Swift.org , Anda tidak boleh melewatkan Instalasi di sini .


seperti yang pertama saya jawab dalam Jalankan skrip swift dari proyek Xcode iOS sebagai fase pembuatan

Puttin
sumber
8

** update pada xcode6 beta 4 **

ini juga dapat dilakukan pada preferensi xcode. cukup buka xcode -> preferensi -> lokasi.

untuk alat baris perintah cukup pilih versi yang Anda inginkan dari opsi daftar drop-down, lihat gambar di bawah ini. (swift membutuhkan jalur untuk menjadi jalur xcode6).

layar alat baris perintah

Saya akan meninggalkan jawaban saya sebelumnya di bawah ini juga.


apa yang dikatakan Kaan dan Anda juga dapat menggunakan skrip apel untuk membuat aplikasi sederhana sehingga Anda dapat menggunakannya untuk bolak-balik.

buka skrip apel> tempelkan kode di bawah ini & ekspor sebagai aplikasi sehingga hanya dengan satu klik Anda dapat beralih ke jalur default atau jalur beta (untuk menggunakan 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

lalu jalankan> xcrun swift

penolakan

  1. skrip menganggap Anda telah menginstal xcode6-beta & xcode5.
  2. jika Anda seorang pengembang baru yang mencoba keluar hanya xcode6beta Anda tidak perlu script atau pengaturan jalan secara manual. jalankan saja xcrun swiftkarena jalur telah ditetapkan untuk Anda.
  3. ketika xcode6 akhirnya dirilis, Anda perlu mengatur ulang jalur Anda kembali ke default dari aplikasi sederhana ini dan tidak pernah menggunakannya lagi.
nsuinteger
sumber
Saya telah menginstal XCode 5 dan sekarang telah "memperbarui" (= diganti) ke XCode 6. Apakah ada cara untuk mengembalikan 5.x sekarang? Dengan solusi ini?
Matthias Max
apa maksudmu mengembalikan 5.x? xcode6 GM atau rilis appstore akan menggantikan xcode5.
nsuinteger
6

Setelah menginstal rilis resmi Xcode 6.1, ada swiftperintah di /usr/bin/swift.

Ingatlah bahwa jika Anda memiliki Python yang berbeda dari Python yang disediakan Apple di jalurnya, swiftbisa gagal dengan ImportError: No module named site. Dalam hal ini, pastikan Anda melakukannya export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbinsebelum menelepon swift.

juandesant
sumber
5

Perintah xcrun akan menggunakan variabel lingkungan DEVELOPER_DIR untuk menimpa instalasi Xcode yang saat ini dipilih (sebagaimana diatur dengan xcode-pilih). Anda dapat menggunakannya untuk membuat satu perintah yang akan berjalan cepat pada baris perintah dan menempatkan Anda di REPL. Itu terlihat seperti ini:

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

dan Anda bisa alias itu hanya 'swift':

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

Sebagai catatan tambahan yang menarik, Anda dapat menggunakan jenis pemanggilan yang sama untuk menjalankan skrip swift seperti Anda menggunakan bash atau python dengan menambahkan -i:

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

println("Hello World!")

Tentu saja, setelah Xcode 6 dirilis secara resmi dan Anda beralih ke itu sebagai alat pengembang default Anda, Anda dapat melepaskan DEVELOPER_DIR = .. bits dan cukup gunakan "xcrun swift".

Jay Lyerly
sumber
4

pastikan Anda menginstal xcode 6.0 , tetapi tidak 6.1

Jika Anda mendapatkan kesalahan:

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

lari saja

xcrun --sdk iphonesimulator8.0 swift

atau kamu bisa

export SDKROOT="iphonesimulator8.0" 

lalu

xcrun swift

Gunakan " xcodebuild -showsdks" untuk mencantumkan nama SDK yang tersedia.

jika Anda menginstal xcode 6.1 , cukup

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

Untuk XCode6, jalankan perintah berikut:

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

$ xcrun swift

Jika Anda mendapatkan kesalahan:

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

mencoba:

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

buka Terminal,

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

Pemberitahuan: Ini Xcode6-Beta6.appharus diganti ke versi yang sesuai yang Anda instal

Kemudian letakkan baris ini alias swift='xcrun swift'ke~/.bash_profile

Dan,

$source ~/.bash_profile

$swift

Ini dia!

Johnny Zhao
sumber
1

Dengan bantuan Swift REPL (Read Eval Print Loop).

Pengembang yang terbiasa dengan bahasa yang ditafsirkan akan merasa nyaman di lingkungan baris perintah ini, dan bahkan pengembang berpengalaman akan menemukan beberapa fitur unik

Luncurkan Terminal.app dan ketik swift dan tekan enter. Anda kemudian akan berada di 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
sumber