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


定数は 「let 定数名」で宣言できます。
let a = 10
let b = 0.1
let c = "abc"

// 「,」で区切って、複数の変数を宣言することも出来ます。
let d=20, e=0.2, f="def"
型を指定せずに宣言した場合、宣言時に代入された値から推論して型が決められます。
String(a.dynamicType)
// => "Int"
String(b.dynamicType)
// => "Double"
String(c.dynamicType)
// => "String"
上記のように型を指定せずに宣言することもできますが、「let 定数名:型名」というように型を指定して宣言することもできます。
let g:Int = 10
let h:Double = 0.1
let i:String = "ghi"
変数と異なり、定数の値を変更しようとするエラーになります。
// c="def"
// => Cannot assign to value: 'c' is a 'let' constant
// 定数の値を変更しようとしたためエラー
変数と同様に、型を指定せず値も代入しない場合は宣言することはできません。
// let j
// => Type annotation missing in pattern
// エラーになる

let k:Int
// これはOK
ここまでで宣言した定数にはnilを代入することはできません。
// k=nil
// => Nil cannot be assigned to type 'Int'
// 通常の定数にはnilは代入できないのでエラーになる
nilを代入可能にするには、「let 変数名:型名?」と型名の後に?をつける必要があります。
let l:Int?
l=nil
オプショナル変数を通常の変数に戻す(アンラップ)するには「!」演算子を使用します。
let m:String? = "jkl"
print(m)
// => Optional("jkl")

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

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

print(m!)
// => "jkl"
print(n)
// => "jkl"