読者です 読者をやめる 読者になる 読者になる

Linux Mint(Ubuntu)で Swift を使ってみる

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]



※参考
Swift | Swift言語を学ぶ