Xcodeは入れたものの、どうやったらswiftが使えるようになるのかわからない。
XCode 6をインストールしたら、いきなりコマンドラインからswiftが使えるみたい。
では、コマンドラインでまずは実行してみよう。のメモ
wikipediaより
Swift(スウィフト)は、アップルのiOSおよびOS Xのためのプログラミング言語。
SwiftをXcodeで使ってみる
を投稿しました(2015-5-14)
コマンドラインでswiftを使う
・Swiftをコマンドライン(CLI)で実行する
を参考にさせてもらいました。
上記参考URLではXcodeをBata版をインストールした場合の動作です。
もし、Bata版を入れた場合、PATHを設定しないと使用できないようです。
AppStoreからXcode入れた場合は意図的にPATH設定をしなくても使えるようです。
[ $ swift -h ]でパスが通っているのか確認
swift言語のファイルをつくる
[Hello Word]と表示させるファイルを作ります。
拡張子はなんでも大丈夫です。
でも、約束として拡張子を .swift にするようです。
無理に.swiftにしなくても動きました。。
var str = "Hello Swift World!!"
println(str)
これを実行すると無事に文言がでてきました。
$ swift hello.swift
Hello Swift World!!
$
<番外編>
swiftをコマンドラインから使うための準備
SwiftコマンドにPATHを通す
毎回パスを通すのが面倒であれば、bashの設定をしてしまうのがいいかもしれません。
ホームに.bash_profileがなければ新しく作って自分環境を充実させるのもよいかと。。
私は、毎回パスを通すことにします。
$ export PATH=$PATH:`find /Applications/Xcode-beta.app -name swift|grep bin|xargs -I{} dirname {}`
もしも、以下の様なエラーがでてきて、ダイアログが立ち上がってきたらBata版のせいかもしれません。
$ swift -h
xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.
<念の為調査>
swiftが入っているのかを確認。
$ find /Applications/Xcode-beta.app -name swift | grep bin
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
swiftはインストールされているみたい。
直叩きで、結果が返ってきたので、パスがおかしいだけのようです。
$ /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -h
OVERVIEW: Swift compiler
:
env で確認してみると、ちゃんといる。。。
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
PATHではなく、違う名前で環境変数の設定をして実行してみました。
そしたら無事に実行できました。
$ export SWIFT=/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/
$ $SWIFT/swift -h
OVERVIEW: Swift compiler
Swiftのバージョン確認しようとしたらREPLで開いてしまった!! メモ(追記:20151217)
<原因>
ただバージョンを確認したかったので、ヘルプを良く見ずに[-v]オプションをつけてコマンドラインで実行してしまった。
すると。。。
$swift -v
Apple Swift version 2.1 (swiftlang-700.1.101.6 clang-700.1.76)
Target: x86_64-apple-darwin15.0.0
/Applications/Xcode.app/Contents/Developer/usr/bin/lldb "--repl=-target x86_64-apple-darwin15.0.0 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -color-diagnostics"
Welcome to Apple Swift version 2.1 (700.1.101.6 700.1.76). Type :help for assistance.
1>
入力待機状態に陥ってしまった。
これはREPL(Read eval print loop)モードというらしい。
対話型でswiftソースを直接書いて実行できることがわかった。
Welcome to Apple Swift version 2.1 (700.1.101.6 700.1.76). Type :help for assistance.
1> var str = "Hello Swift World!!"
str: String = "Hello Swift World!!"
2>
最初、この抜け方が全くわからなくて非常に焦った
2> ^C
2> bye
repl.swift:2:1: error: use of unresolved identifier 'bye'
bye
2> exit
repl.swift:2:1: error: use of unresolved identifier 'exit'
exit
2> return
repl.swift:2:1: error: return invalid outside of a func
return
5> \q
/var/folders/ts/8v366z5x49s75x6pv6_c43hc0000gq/T/./lldb/2710/repl9.swift:2:1: error: invalid character in source file
\q
思いつく抜け方で試して抜けれなくて調べた結果、REPLモードは[:quit]で抜けれることがわかりました。。
参考URL:
REPLモードとシェルモードでギーク開発
SwiftのREPLモード(インタプリタ)
[Swift] コマンドライン(Command Line)プログラムとして使う