Swift 練習
Mac をもっていないので Linux Mint でやっている。使っているバージョンは Swift version 3.1-dev。
文法。
1.1. Swift について | Swift | スタジオガラゴ
まずは
$ cd ~/Documents/Swift $ export PATH=$HOME/Documents/Swift/usr/bin:$PATH
REPL。
$ swift
$ swift helloswift.swift
コンパイル→実行
$ swiftc helloswift.swift $ ./helloswift
クイックソート
import Glibc func qsort(_ ar: [Int]) -> [Int] { if ar.isEmpty {return []} var xs = ar xs.remove(at: 0) let pivot = ar[0] let left = xs.filter({$0 < pivot}) let right = xs.filter({$0 > pivot}) return qsort(left) + Array(arrayLiteral: pivot) + qsort(right) } print(qsort([5, 1, 3, 9, 8, 7])) //=>[1, 3, 5, 7, 8, 9] //filter は Ruby の select のようなもの //[pivot] とは書けない => Array(arrayLiteral: pivot) と書く //Ruby の ar[2..5] みたいなのはどう書くのか → ar[2...5] でした //Ruby の ar[2..-1] は ar[2..<ar.count] と書くしかないのかな?
※参考
配列 | Swift言語を学ぶ
【Swift】配列のメソッドまとめ
Swiftのmap, filter, reduce(などなど)はこんな時に使う!
map, filter, reduce
[1, 2, 3].map({$0 * 3}) //=>[3, 6, 9] [1, 2, 3].map {$0 + 10} //=>[11, 12, 13] 括弧の省略 [1, 2, 3].filter({$0 <= 2}) //=>[1, 2] [1, 2, 3].reduce(0) {(a: Int, b: Int) -> Int in a + b} //=>6 [1, 2, 3].reduce(0) {(a, b) -> Int in a + b} //=>6 [1, 2, 3].reduce(0) {$0 + $1} //=>6 [1, 2, 3].reduce(0, +) //=>6
append
[1, 2, 3] + [10] //=>[1, 2, 3, 10] var a = [1, 2, 3] a.append(10) //=>[1, 2, 3, 10] a.append(contentsOf: [7, 8]) //=>[1, 2, 3, 7, 8] var a = [Any]() a = [1, 2, 3] a.append("a") //=>[1, 2, 3, "a"] a.count //=>4 配列の大きさ