Swift ってよさそうな言語だけれど、Apple のみかと思っていたら、一応 Ubuntu でも動くのですね。インストールは以下のサイトを参考にしました。
gihyo.jp
Docker を使ってやってみました。Linux Mint 17.2 で動作確認。
$ sudo docker pull swiftdocker/swift $ sudo docker run -i -t --privileged=true --name swiftfun swiftdocker/swift:latest /bin/bash root@b10ec0b6064f:/# swift --version Swift version 3.0-dev (LLVM f54fa77021, Clang 76d1ba12e0, Swift 97ba30afc5) Target: x86_64-unknown-linux-gnu
で OK です。ご覧のとおり、いまインストールするとヴァージョンは 3.0-dev ということですね。
$ sudo docker start swiftfun $ sudo docker attach swiftfun
でコンテナ内に入れます。あとは $ swift
で REPL(対話型実行環境)が起動します。
helloswift.swift
import Glibc print("Hello, World!")
$ swift helloswift.swift Hello, World!
$ swiftc helloswift.swift $ ./helloswift Hello, World!
文法はここなどを見ましたが、まだ不安定なようです。例えば println は ver 3.0-dev ではエラーになります。
しかし Docker は簡単だけれど、使わない方がよかったかな。慣れない vi を使ったりしています。
※追記
Docker など使わず、もっとお手軽に導入してみました。
Linux Mint(Ubuntu)で Swift を使ってみる(その2) - Camera Obscura
FizzBuzz
import Glibc for i in 1...50 { if i % 15 == 0 { print("Fizz Buzz") } else if i % 3 == 0 { print("Fizz") } else if i % 5 == 0 { print("Buzz") } else { print(i) } }
フィボナッチ数列
import Glibc var a = 1 var b = 1 var tmp = 0 while a < 100 { print(a) tmp = a; a += b; b = tmp }
バブルソート
よくわからなくて苦労しました。関数の引数は let 扱いになります。
import Glibc func bubble_sort(arr: Array<Int>) -> (Array<Int>) { var ar = arr let ln = ar.count - 1 var tmp = 0 for i in 0...(ln - 1) { for j in 1...(ln - i) { if ar[j - 1] > ar[j] { tmp = ar[j]; ar[j] = ar[j - 1]; ar[j - 1] = tmp } } } return ar } print(bubble_sort(arr: [9, 4, 5, 2, 1, 3])) //=>[1, 2, 3, 4, 5, 9]