
なんとなく、このブログのアクセス内訳を見てみた。
Windows7がむっちゃ多い。
Mac OS Xは自爆がけっこー含まれるはずw
-->
if文
let a = 10
if a == 10 {
println("真")
} else {
println("偽")
}
C言語と違って、if文のあとを()で書こう必要がない。ifのあとの式は、結果Bool型かBooleanTypeプロトコルを実装したクラスのオブジェクトでないといけない。
for文
let hoge = [1, 2, 3]
// 配列一覧表示
for var i = 0; i < hoge.count; i++ {
println(i)
}
// 他の言語であるforerach文
for i in hoge {
println(i)
}
// Range指定でループ
// 1〜5まで表示される
for i in 1...5 {
println(i)
}
// 1〜4まで表示される。
for i in 1..<5 {
println(i)
}
// 辞書を一覧表示
let hoge2 = [
"key1":1,
"key2":2,
"key3":3,
]
for (key, val) in hoge2 {
println("key=\(key),val=\(val)")
}
if文と同じように()が必要ない。
while、do〜while文
var n = 1
while n < 10 {
println(n)
n++
}
n = 1
do {
println(n)
n++
} while n < 10
C言語なんかといっしょ。if文と同じように()が必要ない。
あと、switchがあるが、またこんど。
配列の宣言は、
let hoge:[Int] = [1, 2, 3]
となる。もちろん、:[Int]のところは、省略可能だ。
つまり、データ型を指定して変数を宣言する場合は、データ型を[]で囲ってやる。
空の配列は、
var hoge2 = [String]()
var hoge3 = Array<String>()
のように宣言する。
配列への追加、参照は、
hoge2.append("hoge1")
hoge2.append("hoge2")
println(hoge2[0]) // "hoge1"と表示される。
こんな感じ。
辞書は、いわゆる連想配列のようなものだ。辞書の宣言は、
var hoge4:[String:Int] = [
"Key1" : 10,
"Key2": 20,
]
for (key,val) in hoge4 {
println("key:\(key)=val:\(val)")
}
// key:Key1=val:10
// key:Key2=val:20
// って、表示される。
こんな感じだ。
空の辞書は、
var hoge5 = [String:Int]()
var hoge6 = Dictionary<String, Int>()
のように宣言する。
辞書の追加や表示は、
hoge5["key1"] = 10
hoge5["key2"] = 20
println(hoge5["key1"]!) // "10"と表示される
こんな感じ。
hoge5["key1"]で返ってくる値は、Optional型なので設定される値を参照したい場合は、!を付ける必要がある。またキーが存在しない場合は、nilになる。
変数宣言は、
var hoge = 10
var hoge2 = "hogehoge"
とする。今時の言語に多い型推論が働いてInt型になっている。
hoge = "hogehogehoge"
を行うとエラーになる。
型を明示的に指定するには変数名の後に、:と型を書く。
var hoge3:String
var hoge4:Int
基本的なデータ型は、
符号付き整数は、Int、Int8、Int16、Int32、Int64、符号無し整数は、UInt、UInt8、UInt16、UInt32、UInt64で、Intは、32ビット環境ではInt32と同じサイズ、64ビット環境ではInt64と同じサイズになる。UIntも同様。
浮動小数点は単精度がFloat、倍精度がDoubleになる。
文字列は、String、文字はCharacterになる。
2値型は、Bool。trueかfalseをとる。
定数は、
let hoge5 = 10
let hoge6 = "hogehoge"
となる。当然、後から値を代入するコードを書くとエラーになる。データ型やデータ型を明示的に各方法は変数と同じだ。
文字列
文字列は、+によって文字列連結できる。
let hoge6 = "hogehoge"
var hoge7 = "aiueo"
var hoge8 = hoge6 + hoge7 // "hogehogeaiueo"になる
hoge8 += "123" // "hogehogeaiueo123"になる
文字列中に\()の括弧内に式を書いておくと、その部分に式の演算結果が埋め込まれる。
let hoge5 = 10
var hoge8 = "あいうえお\(hoge5),\(hoge5 + 2)" // "あいうえお10,12"になる。
こんな感じ。
とりあえず、Hello,World。
println("Hello, World!")
これを、hello.swiftと言う名前で保存して、ターミナルで
swiftc hello.swift
とすると、helloと言うファイルができるのでターミナルで
./hello
とすると、
Hello, World!
と表示される。
C言語と比べると、main関数、文の最後の;が無かったりする。あってもいいみたいで
;は、1行に複数文書く場合に区切りとして使う。
こんな感じだ。
print("Hello, ");println("World!")
さて、main関数がないってことは、コマンドライン引数をとる方法は、APIを使うことになる。
import Foundation
// コマンドライン引数を取得
let args = NSProcessInfo.processInfo().arguments
for var i = 1; i < args.count; i++ {
println(args[i])
}