[Mac] Swiftで変数を宣言する

Swiftの変数は次のように宣言できます。

変数は 「var 変数名」で宣言できます。

var a = 10
var b = 0.1
var c = “abc”

「,」で区切って、複数の変数を宣言することも出来ます。

var d=20, e=0.2, f=”def”

型を指定せずに宣言した場合、宣言時に代入された値から推論して型が決められます。

String(a.dynamicType)
// => “Int”
String(b.dynamicType)
// => “Double”
String(c.dynamicType)
// => “String”

上記のように型を指定せずに宣言することもできますが、「var 変数名:型名」というように型を指定して宣言することもできます。

var g:Int = 10
var h:Double = 0.1
var i:String = “ghi”

型が異なる変数に代入しようとするエラーになります。

// c=20
// => Cannot assign value of type ‘Int’ to type ‘String’
// String型の変数に整数を代入しようとしたためエラー

型を指定せず値も代入しない場合は、変数を宣言することはできません。

// var j
// => Type annotation missing in pattern
// エラーになる

var k:Int
// これはOK

ここまでで宣言した変数にはnilを代入することはできません。

// d=nil
// => Nil cannot be assigned to type ‘Int’
// 通常の変数にはnilは代入できないのでエラーになる

// print(k)
// => Variable ‘k’ used before being initialized
// 値が代入されてないためエラーになる

nilを代入可能にするには、「var 変数名:型名?」と型名の後に?をつけたオプショナル変数とする必要があります。

var l:Int?
print(l)
// => “nil”

l=30
print(l)
// => “Optional(30)\\n”
// オプショナル変数の場合、printすると「Optional(値)」と表示される。
l=nil
// オプショナル変数にはnilも代入可能

オプショナル変数を通常の変数に戻す(アンラップ)するには「!」演算子を使用します。

var m:String? = “jkl”
print(m)
// => Optional(“jkl”)

//var n:String = m
// => Value of optional type ‘String?’ not unwrapped; did you mean to use ‘!’ or ‘?’?
// オプショナル変数は通常の変数に代入できないのでエラーになる。

var n:String = m!
// !演算子を使って通常の変数に戻す(アンラップ)と代入可能になります。

print(m!)
// => “jkl”
print(n)
// => “jkl”

[Mac][Swift] オブジェクトの型(クラス名)を取得する

Swiftでは次の方法でオブジェクトの型を取得することができます。

var a = 10
var b = 0.1
var c = “abc”
a.dynamicType
// => Int.Type

.Typeが邪魔な場合はStringを使うと便利

String(b.dynamicType)
// => “Double”

print関数内では.Typeが付かず出力される

print(c.dynamicType)
// “String\n”

クラス名も取得できる。

class Test {
}
var test = Test()
print(test.dynamicType)
// => “Test\n”