ฉันจะใช้ swift ใน Terminal ได้อย่างไร?


108

ผมอ่านมีอะไรใหม่ใน Xcode 6 บทความแนะนำคุณสมบัติใหม่บางอย่างเกี่ยวกับ Xcode 6 และระบุว่า:

บรรทัดคำสั่ง

ดีบักเกอร์ของ Xcode ประกอบด้วยภาษา Swift เวอร์ชันโต้ตอบที่เรียกว่า REPL (Read-Eval-Print-Loop) ใช้ไวยากรณ์ของ Swift เพื่อประเมินและโต้ตอบกับแอปที่กำลังทำงานอยู่หรือเขียนโค้ดใหม่ในสภาพแวดล้อมแบบสคริปต์ REPL มีให้จากภายใน LLDB ในคอนโซลของ Xcode หรือจาก Terminal

ฉันต้องการทราบวิธีรับ REPL?


3
นี่คือบทความที่ฉันเขียนเกี่ยวกับเรื่องนี้ medium.com/swift-programming/…
Santosh

คุณยังสามารถใช้ออนไลน์ได้หากคุณชอบrepl.it/languages/swift
Amjad Masad

คำตอบ:


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

จากนั้นคุณสามารถดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้:

xcrun swift 
lldb --repl

ตั้งแต่ Xcode 6.1 - การพิมพ์swiftในเทอร์มินัลจะเป็นการเปิดตัว REPL เช่นกัน


2
... และที่จะเลิกพิมพ์+Ctrl d
arve0

57

หรือหากคุณไม่ต้องการทำให้สภาพแวดล้อม dev ปัจจุบันของคุณยุ่งเหยิงคุณสามารถเรียกใช้:

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

30
หรือคุณสามารถก้าวไปอีกขั้นและเพิ่มสิ่งนี้ใน~/.bash_profile:alias swift="/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift"
เดวิดเบ็ค

6
เพื่อให้สามารถใช้ OS X SDK ได้คุณต้องระบุพา ธ ไปด้วย:/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

ขอบคุณสำหรับแนวคิด David ฉันเพิ่มสิ่งนั้นลงในโปรไฟล์ แต่ฉันไม่ได้รับไฟล์หรือไดเร็กทอรีดังกล่าวแม้ว่าจะอยู่ที่นั่นและสิทธิ์-rwxr-xr-x@ 1 mark2 admin 33557440 31 May 14:43 swiftก็ตาม ฉันไม่ได้แข็งแกร่งขนาดนั้นในหน่วย มีใครเห็นผิดมั้ยคะ?
MarkAurelius

การใช้xcrun --find swiftเพื่อให้ได้เส้นทางจะเป็นการพิสูจน์ในอนาคตมากขึ้น
Mike Weller

1
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 swiftเป็นวิธีที่ดีกว่า แหล่งกำเนิดคำตอบที่นี่: stackoverflow.com/a/36254848/5768974
พัตติน

42

ขั้นตอนที่ 1: เปิด Terminal
ขั้นตอนที่ 2: พิมพ์ "swift"
ขั้นตอนที่ 3: ไม่มีขั้นตอนที่ 3

ตัวอย่าง:

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$ 

แม้ว่าคุณจะสามารถใช้งานต่อไปได้xcrun swiftแต่ตั้งแต่ Swift 2.1 เป็นต้นไปคุณสามารถเรียกใช้swiftจากบรรทัดคำสั่ง
timbo

ตัวอย่างของฉันมาจาก Swift 1.0 ในเดือนกรกฎาคม 2014 มันใช้งานได้โดยไม่ต้อง xcrun ตั้งแต่นั้นเป็นต้นมาสำหรับฉัน
MacMark

16

ใน Xcode 6.1.1 ที่ติดตั้ง Command Line Tools คุณสามารถรันสคริปต์ได้โดยอ้างอิงโดยตรงกับ/usr/bin/swiftวิธีต่อไปนี้:

#!/usr/bin/swift

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

ยืนยันว่าใช้งานได้กับ swift 2.1.1 (xcode 7.2 install)
thibaut noah

1
ใครที่อยากเล่น Swift 2.3 ใน Xcode 8 ไม่ควรพลาดstackoverflow.com/a/36254848/1298043
Puttin

15

ในลักษณะเดียวกับการเรียกใช้ Swift จาก Terminal คุณยังสามารถเรียกใช้สคริปต์ได้ เพียงใช้ shebang ต่อไปนี้และเรียกใช้สคริปต์ของคุณ ( ตาม Chris Lattnerผู้สร้าง Swift)

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

6
ตาม XCode 6 Beta 5 -iแฟล็กถูกลบออกและจะนำไปสู่ข้อผิดพลาด เพียงแค่ปล่อยมันไปและใช้#!/usr/bin/env xcrun swiftแทน
Jeehut

ใครที่อยากเล่น Swift 2.3 ใน Xcode 8 ไม่ควรพลาดstackoverflow.com/a/36254848/1298043
Puttin

10

หากมีใครสนใจ Shebang สคริปต์ Swift ง่ายๆ:

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

หากต้องการเวอร์ชันเป้าหมายเฉพาะ

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

หากต้องการ toolchain เฉพาะ (เช่นคุณต้องการใช้ Swift 2.3 แต่คุณกำลังใช้ Xcode 8)

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

หากคุณต้องการใช้ Swift 2.2 ใน Xcode 7.3.1 ของคุณสมมติว่า Xcode 7.3.1 อยู่ที่ /Applications/Xcode7.app

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

จากนี้ไปเปลี่ยนไดเร็กทอรีนักพัฒนาที่ใช้งานอยู่เริ่มต้นคุณสามารถตรวจสอบได้ว่าใช้:

xcode-select -p

หากคุณต้องการภาพรวมการใช้งานให้โดยSwift.orgคุณไม่ควรพลาดการติดตั้งที่นี่


ตามที่ฉันตอบครั้งแรกในRun swift script จากโครงการ Xcode iOS เป็นขั้นตอนการสร้าง


8

** อัปเดตเมื่อ xcode6 เบต้า 4 **

สิ่งนี้สามารถทำได้ในการตั้งค่า xcode เพียงไปที่ xcode -> ค่ากำหนด -> สถานที่

สำหรับเครื่องมือบรรทัดคำสั่งเพียงแค่เลือกเวอร์ชันที่คุณต้องการจากตัวเลือกรายการแบบเลื่อนลงดูภาพด้านล่าง (รวดเร็วต้องการพา ธ เพื่อเป็นพา ธ ของ xcode6)

หน้าจอเครื่องมือบรรทัดคำสั่ง

ฉันจะทิ้งคำตอบก่อนหน้านี้ไว้ด้านล่างเช่นกัน


สิ่งที่ Kaan พูดและคุณยังสามารถใช้สคริปต์แอปเปิ้ลเพื่อสร้างแอปพลิเคชั่นง่ายๆเพื่อให้คุณสามารถใช้สลับไปมาได้

เปิดสคริปต์แอปเปิ้ล> วางโค้ดด้านล่างและส่งออกเป็นแอปพลิเคชันดังนั้นเพียงคลิกเดียวคุณสามารถเปลี่ยนไปใช้เส้นทางเริ่มต้นหรือเส้นทางเบต้า (เพื่อใช้อย่างรวดเร็ว)

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

จากนั้นเรียกใช้> xcrun swift

ข้อจำกัดความรับผิดชอบ

  1. สคริปต์จะถือว่าคุณติดตั้งทั้ง xcode6-beta & xcode5 แล้ว
  2. หากคุณเป็นนักพัฒนามือใหม่ที่กำลังทดลองใช้งาน xcode6beta เท่านั้นคุณจะไม่ต้องใช้สคริปต์หรือเส้นทางการตั้งค่าด้วยตนเอง เพียงแค่วิ่งxcrun swiftตามเส้นทางที่กำหนดไว้สำหรับคุณแล้ว
  3. เมื่อ xcode6 ถูกปล่อยออกมาในที่สุดคุณจะต้องรีเซ็ตเส้นทางของคุณกลับไปเป็นค่าเริ่มต้นจากแอพง่ายๆนี้และอย่าใช้อีกเลย

ฉันติดตั้ง XCode 5 แล้วและตอนนี้ "อัปเดต" (= ถูกแทนที่) เป็น XCode 6 มีวิธีนำ 5.x กลับมาในตอนนี้หรือไม่? ด้วยวิธีนี้?
Matthias Max

คุณหมายถึงอะไรนำ 5.x กลับมา? xcode6 GM หรือ appstore release จะแทนที่ xcode5
nsuinteger

6

หลังจากติดตั้ง Xcode 6.1 อย่างเป็นทางการแล้วมีswiftคำสั่งใน/usr/bin/swift.

โปรดทราบว่าหากคุณมี Python ที่แตกต่างจาก Python ที่ Apple จัดหาให้ในเส้นทางswiftอาจล้มเหลวด้วยImportError: No module named site. ในกรณีที่ให้แน่ใจว่าคุณทำก่อนที่จะเรียกexport PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbinswift


5

คำสั่ง xcrun จะใช้ตัวแปรสภาพแวดล้อม DEVELOPER_DIR เพื่อแทนที่การติดตั้ง Xcode ที่เลือกในปัจจุบัน (ตามที่ตั้งค่าด้วย xcode-select) คุณสามารถใช้สิ่งนั้นเพื่อสร้างคำสั่งเดียวที่จะทำงานอย่างรวดเร็วบนบรรทัดคำสั่งและทำให้คุณอยู่ใน REPL ที่มีลักษณะดังนี้:

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

และคุณสามารถใช้นามแฝงว่า 'รวดเร็ว':

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

ในฐานะที่เป็นข้อสังเกตที่น่าสนใจคุณสามารถใช้การเรียกใช้แบบเดียวกันเพื่อเรียกใช้สคริปต์ที่รวดเร็วเช่นเดียวกับที่คุณใช้ bash หรือ python โดยการเพิ่ม a -i:

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

println("Hello World!")

แน่นอนว่าเมื่อ Xcode 6 ได้รับการเผยแพร่อย่างเป็นทางการและคุณเปลี่ยนไปใช้เป็นเครื่องมือสำหรับนักพัฒนาเริ่มต้นคุณสามารถวาง DEVELOPER_DIR = .. บิตและใช้เพียง "xcrun swift"


4

ตรวจสอบให้แน่ใจว่าคุณติดตั้งxcode 6.0แต่ไม่ใช่6.1

หากคุณได้รับข้อผิดพลาด:

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

เพียงแค่เรียกใช้

xcrun --sdk iphonesimulator8.0 swift

หรือคุณสามารถ

export SDKROOT="iphonesimulator8.0" 

แล้ว

xcrun swift

ใช้ " xcodebuild -showsdks" เพื่อแสดงชื่อ SDK ที่มี

หากคุณติดตั้งxcode 6.1เพียงแค่

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

2

สำหรับ XCode6 ให้รันคำสั่งเหล่านี้:

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

$ xcrun swift

หากคุณได้รับข้อผิดพลาด:

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

ลอง:

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

1

เปิด Terminal,

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

หมายเหตุ:Xcode6-Beta6.appควรจะเปลี่ยนไปเป็นรุ่นที่คุณติดตั้งที่เหมาะสม

จากนั้นใส่บรรทัดนี้alias swift='xcrun swift'เป็น~/.bash_profile

และ,

$source ~/.bash_profile

$swift

ไปเลย!


1

ด้วยความช่วยเหลือของ Swift REPL (อ่าน Eval Print Loop)

นักพัฒนาที่คุ้นเคยกับภาษาที่ตีความจะรู้สึกสบายใจในสภาพแวดล้อมบรรทัดคำสั่งนี้และแม้แต่นักพัฒนาที่มีประสบการณ์ก็จะพบกับคุณสมบัติพิเศษบางอย่าง

เปิด Terminal.app แล้วพิมพ์ swift แล้วกด Enter จากนั้นคุณจะอยู่ใน 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>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.