Làm cách nào để sử dụng swift trong Terminal?


108

Tôi đã đọc Có gì mới trong Xcode 6 . Bài báo giới thiệu một số tính năng mới về Xcode 6 và nó cho biết:

Dòng lệnh

Trình gỡ lỗi của Xcode bao gồm một phiên bản tương tác của ngôn ngữ Swift, được gọi là REPL (Read-Eval-Print-Loop). Sử dụng cú pháp Swift để đánh giá và tương tác với ứng dụng đang chạy của bạn hoặc viết mã mới trong môi trường giống như tập lệnh. REPL có sẵn từ bên trong LLDB trong bảng điều khiển của Xcode hoặc từ Terminal.

Tôi muốn biết cách lấy REPL?


3
Đây là một bài báo tôi đã viết, về điều này. medium.com/swift-programming/…
Santosh

Bạn cũng có thể sử dụng nó trực tuyến nếu bạn thích repl.it/languages/swift
Amjad Masad

Câu trả lời:


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

thì bạn có thể làm một trong những điều sau:

xcrun swift 
lldb --repl

Đối với Xcode 6.1 - nhập swiftvào thiết bị đầu cuối cũng khởi chạy REPL.


2
... và để thoát, hãy nhập Ctrl+ d.
arve0

57

Ngoài ra, nếu bạn không muốn làm xáo trộn môi trường nhà phát triển hiện tại của mình, bạn có thể chạy:

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

30
Hoặc, bạn thậm chí có thể tiến thêm một bước nữa và thêm điều này vào ~/.bash_profile:alias swift="/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift"
David Beck

6
Để có thể sử dụng OS X SDK bạn phải chỉ định đường dẫn đến nó là tốt:/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

Cảm ơn ý tưởng của David. Tôi đã thêm tệp đó vào hồ sơ, nhưng tôi vẫn nhận được Không có tệp hoặc thư mục nào như vậy, mặc dù nó ở ngay đó và có quyền -rwxr-xr-x@ 1 mark2 admin 33557440 31 May 14:43 swift. Tôi không mạnh về đơn vị. Bất cứ ai có thể thấy những gì là sai?
MarkAurelius

Sử dụng xcrun --find swiftđể có được những con đường sẽ được nhiều hơn nữa trong tương lai chứng minh
Mike Weller

1
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 swiftlà cách tốt hơn. Câu trả lời gốc ở đây: stackoverflow.com/a/36254848/5768974
Puttin

42

Bước 1: Mở Terminal
Bước 2: Gõ "swift"
Bước 3: Không có bước 3

Thí dụ:

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$ 

Mặc dù bạn có thể tiếp tục sử dụng xcrun swift, nhưng từ Swift 2.1 trở đi, bạn có thể chỉ cần chạy swifttừ dòng lệnh.
timbo

Ví dụ của tôi là từ Swift 1.0 vào tháng 7 năm 2014. Nó đã hoạt động mà không có xcrun kể từ đó đối với tôi.
MacMark,

15

Tương tự như cách chạy Swift từ Terminal, bạn cũng có thể thực thi các tập lệnh. Chỉ cần sử dụng shebang sau và chạy tập lệnh của bạn. ( Theo Chris Lattner , người tạo ra Swift)

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

6
Theo XCode 6 Beta 5, -icờ đã bị xóa và sẽ dẫn đến lỗi. Chỉ cần để nó đi và sử dụng #!/usr/bin/env xcrun swiftthay thế.
Jeehut

Bất kỳ ai muốn chơi với Swift 2.3 trong Xcode 8 không nên bỏ lỡ stackoverflow.com/a/36254848/1298043
Puttin

15

Trong Xcode 6.1.1 với Công cụ dòng lệnh được cài đặt, bạn có thể thực thi các tập lệnh bằng cách tham chiếu trực tiếp đến /usr/bin/swiftcách sau:

#!/usr/bin/swift

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

Xác nhận điều này đang hoạt động với nhanh chóng 2.1.1 (cài đặt xcode 7.2)
thibaut noah

1
Bất kỳ ai muốn chơi với Swift 2.3 trong Xcode 8 không nên bỏ lỡ stackoverflow.com/a/36254848/1298043
Puttin

10

Nếu có ai quan tâm đến một tập lệnh Swift đơn giản thì:

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

Nếu phiên bản mục tiêu cụ thể được yêu cầu

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

Nếu chuỗi công cụ cụ thể là bắt buộc (như bạn muốn sử dụng Swift 2.3 nhưng bạn đang sử dụng Xcode 8)

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

Nếu bạn muốn sử dụng Swift 2.2 trong Xcode 7.3.1 của mình, hãy giả sử Xcode 7.3.1 được đặt tại /Applications/Xcode7.app

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

từ bây giờ, thư mục nhà phát triển hoạt động mặc định đã thay đổi, bạn có thể kiểm tra điều đó bằng cách sử dụng:

xcode-select -p

Nếu bạn muốn sử dụng ảnh chụp nhanh do Swift.org cung cấp , bạn không nên bỏ lỡ Cài đặt tại đây .


như câu trả lời đầu tiên của tôi trong Chạy tập lệnh nhanh từ dự án Xcode iOS trong giai đoạn xây dựng


8

** cập nhật kể từ xcode6 beta 4 **

điều này cũng có thể được thực hiện trên tùy chọn xcode. chỉ cần vào xcode -> tùy chọn -> vị trí.

đối với các công cụ dòng lệnh, chỉ cần chọn phiên bản bạn muốn từ các tùy chọn danh sách thả xuống, hãy tham khảo hình bên dưới. (swift yêu cầu đường dẫn phải là đường dẫn của xcode6).

màn hình công cụ dòng lệnh

Tôi cũng sẽ để lại câu trả lời trước của tôi bên dưới.


những gì Kaan đã nói và bạn cũng có thể sử dụng tập lệnh apple để tạo ứng dụng đơn giản để bạn có thể sử dụng nó để chuyển đổi qua lại.

mở tập lệnh apple> dán mã này bên dưới và xuất nó dưới dạng ứng dụng để chỉ với một cú nhấp chuột, bạn có thể chuyển sang đường dẫn mặc định hoặc đường dẫn beta (để sử dụng nhanh chóng)

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

sau đó chạy> xcrun swift

từ chối trách nhiệm

  1. tập lệnh giả định rằng bạn đã cài đặt cả xcode6-beta & xcode5.
  2. nếu bạn là nhà phát triển mới chỉ đang thử xcode6beta, bạn sẽ không cần bất kỳ tập lệnh hoặc đường dẫn thiết lập nào theo cách thủ công. chỉ cần chạy xcrun swiftnhư đường dẫn đã được thiết lập cho bạn.
  3. khi xcode6 cuối cùng được phát hành, bạn sẽ cần đặt lại đường dẫn của mình về mặc định từ ứng dụng đơn giản này và không bao giờ sử dụng lại.

Tôi đã cài đặt XCode 5 và hiện đã "cập nhật" (= đã thay thế) lên XCode 6. Có cách nào để khôi phục lại 5.x bây giờ không? Với giải pháp này?
Matthias Max

ý bạn là gì mang lại 5.x? xcode6 GM hoặc bản phát hành appstore sẽ thay thế xcode5.
nsuinteger

6

Sau khi cài đặt bản phát hành Xcode 6.1 chính thức, có một swiftlệnh trong /usr/bin/swift.

Hãy nhớ rằng nếu bạn có Python khác với Python do Apple cung cấp trong đường dẫn, swiftcó thể thất bại với ImportError: No module named site. Trong trường hợp đó, hãy đảm bảo rằng bạn thực hiện export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbintrước khi gọi swift.


5

Lệnh xcrun sẽ sử dụng biến môi trường DEVELOPER_DIR để ghi đè cài đặt Xcode hiện được chọn (như được đặt với xcode-select). Bạn có thể sử dụng nó để tạo một lệnh duy nhất sẽ chạy nhanh trên dòng lệnh và đưa bạn vào REPL. Nó trông như thế này:

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

và bạn có thể đặt bí danh đó chỉ để 'nhanh chóng':

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

Một lưu ý phụ thú vị là bạn có thể sử dụng cùng một loại lệnh gọi để chạy một tập lệnh nhanh giống như bạn sử dụng bash hoặc python bằng cách thêm -i:

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

println("Hello World!")

Tất nhiên, sau khi Xcode 6 được phát hành chính thức và bạn chuyển sang đó làm công cụ nhà phát triển mặc định của mình, bạn có thể bỏ các bit DEVELOPER_DIR = .. và chỉ cần sử dụng "xcrun swift".


4

đảm bảo rằng bạn cài đặt xcode 6.0 , nhưng không phải 6.1

Nếu bạn gặp lỗi:

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

chỉ cần chạy

xcrun --sdk iphonesimulator8.0 swift

hoặc bạn có thể

export SDKROOT="iphonesimulator8.0" 

và sau đó

xcrun swift

Sử dụng " xcodebuild -showsdks" để liệt kê các tên SDK có sẵn.

nếu bạn cài đặt xcode 6.1 , chỉ cần

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

2

Đối với XCode6, hãy chạy các lệnh sau:

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

$ xcrun swift

Nếu bạn gặp lỗi:

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

thử:

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

1

mở Terminal,

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

Chú ý: Việc Xcode6-Beta6.appnên được thay thế cho phiên bản thích hợp bạn cài đặt

Sau đó đặt dòng này alias swift='xcrun swift'đến~/.bash_profile

Và,

$source ~/.bash_profile

$swift

Của bạn đây!


1

Với sự trợ giúp của Swift REPL (Read Eval Print Loop).

Các nhà phát triển quen thuộc với các ngôn ngữ được thông dịch sẽ cảm thấy thoải mái trong môi trường dòng lệnh này và ngay cả các nhà phát triển có kinh nghiệm cũng sẽ tìm thấy một vài tính năng độc đáo

Khởi chạy Terminal.app và gõ nhanh và nhấn enter. Sau đó, bạn sẽ ở trong 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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.