9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swiftをインタープリタ型言語として扱う

Last updated at Posted at 2016-03-03

Appleソフトウェアのためだけじゃない言語へ

Swiftがオープンソース化してその使用目的の裾野が広がる動きに合わせて、AppleはSwiftをXcode無しでも使えるようにしていたみたいです。ただあまり需要がまだ無いせいかあまりこのことについて言及している記事が少ないので公式のドキュメントをひも解きながらやっていきたいと思います。

参考: Swift.org

インストール

Swiftオープンソース化ということでもちろんのことマルチプラットフォーム化しています。

OS X

これに関してはもちろん元からインストールされているのでターミナルから使えるようにするだけでいいです。

$ export PATH=/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/bin:"${PATH}"

もちろん.bashrcや.zshrcに書くのが手っ取り早いでしょう。

Linux

clangに付いているみたいです。

$ sudo apt-get install clang
$ export PATH=/path/to/Swift/usr/bin:"${PATH}"

REPLを起動

使い方は簡単です。

$ swift
Welcome to Apple Swift version 2.2. Type :help for assistance.
  1>

このようにswiftとうつことで起動されます。:helpでヘルプが見れますし終了したいときは:qで終了できます。ここらへんはHaskellのghciに似ていますね。

実際に使ってみよう

それでは実際に使ってみましょう。ドキュメントに沿ってやっていきます。

  1> 1 + 2
$R0: Int = 3
  2> let greeting = "Hello!"
greeting: String = "Hello!"
  3> print(greeting)
Hello!

このように扱うことができます。で、この出力フォーマットもしやと思いやってみたら案の定でした。

  4> print($R0)
3

ここらへんは実際にXcodeとかでコード書く時と同じなんですね。
エラーメッセージはこんな感じででます。

  5> let answer = "forty"-"two"
repl.swift:5:21: error: binary operator '-' cannot be applied to two 'String' operands
let answer = "forty"-"two"
             ~~~~~~~^~~~~~
  5>

またこのXcodeと同じようにTabでサジェストする機能もあるらしいです。

  5> "Hi!".re
Available completions:
	removeAll() -> Void
	removeAll(keepCapacity: Bool) -> Void
	removeAtIndex(i: Index) -> Character
	removeRange(subRange: Range<Index>) -> Void
	replaceRange(subRange: Range<Index>, with: C) -> Void
	replaceRange(subRange: Range<Index>, with: String) -> Void
	reserveCapacity(n: Int) -> Void
  5>

また複数行での入力にも対応しています。しかも自動インデントしてくれるみたいです。

  5> let numbers = [1,2,3]
numbers: [Int] = 3 values {
  [0] = 1
  [1] = 2
  [2] = 3
}
  6> for n in numbers.reverse() {
  7.     print(n)
  8. }
3
2
1

またライブラリをimportして使うことも出来るみたいです。import自体は

  9> import Darwin
 10> arc4random_uniform(10)
$R1: UInt32 = 2
 11>

というようにできます。ちなみにこのDarwinというのはOS XだけでLinuxはGlibcというのがかわりに使えるみたいです。

最後に

以上です。これによって簡単な処理をSwiftとかでやりたい時はPlaygroundとか起動するよりももっと手軽かつ便利に扱えるようですね。

ちなみに今回見ていたドキュメントには他にもSwiftコードを手動でビルドする方法とかコマンドラインからデバッグをする方法とかも書いてあります。そこで気付いたんですがlldbってどっかで聞いたことある単語だなと思ったらC言語のデバッグツールでしたね。
全然見た目違うけどSwiftはCベースの言語なんだなと感じました。

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?