Swiftを始めてみる (2)

昨日の続き。

変数の連結

昨日、つまらんところでハマった。

let d: Double = 10
var s = "The value of d is " + String(d) + "."
println(s)

ならOKかと思いきや、

% swift ./test.swift
./test.swift:2:42: error: cannot invoke '+' with an argument list of type '($T6, UnicodeScalarLiteralConvertible)'
var s = "The value of d is " + String(d) + "."
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~

ってなる

これって、以下の様にするとエラーにならない。

let i: Int = 10
var s = "The value of i is " + String(i) + "."
println(s)

ということは、DoubleをString()で文字列に変換して結合することが間違ってたということなんだろうか?ちょっと意味不明。
で、昨日は思うような結果が得られなかった以下の文が今日はちゃんと出力されるので、もうこの件は忘れる。Doubleを文字列型に変換して他の文字列と結合したいときは、こうやって埋め込めばOKだ。

let d:Double = 10
var s:String = "The value of i is \(d) ."
println(s)

制御文

ループに関しては、ちゃんと書いてあった。

for ( int i=0; i<10; i++){
  /* */
}

Cの上記のようなループに相当するのは、Swiftではこんな感じだった。この書き方、パッと覚えられないな。

for i in 0..<10{
 //
}

と思ったら、以下の書き方もアリらしい。ちなみに、++iをi++って書いたらエラーになる。

for var i=0; i<10; ++i{
 //
}

関数

関数は、funcって宣言すれば良いっぽい。

func add (x:Int, y:Int) -> Int {
 return x+y
}
let a: Int = 10
let b: Int = 5
println( add(10, 5) )

関数は、Playgroundの文書を読む限り、なんか「いろいろできる」っぽい感が、もうオレの頭じゃ追いつかない感じ。