このポストを見てちょっと確かめてみました。
Swiftのnilは「値がない」という定義だと理解していたのだけど,厳密には違うようです。
nil < 0 // true
nil < -9_223_372_036_854_775_808 // true
ふーむ。Int.minよりも小さいらしい。つまり「値がある」。
nil < 0.0 // true
nil < -(Double.infinity) // true
なんと-∞よりも小さいという。
何か釈然しないものがあります。バグなのでしょうか?
Optional Chainingを使った時に問題が出そうです。
if some?.value < 0.0 { ... }
意図としては「valueが負の数ならば」ですが,someがnilならボディが実行されてしまいます。
(本当はif letを使うのが望ましい。)
ちなみにBool型では,
nil == true // false
nil == false // false
となり,「値がない」ので真にも偽にもならないという直感通りの挙動を示します。
<追記> 実行環境: Xcode 6.0.1 及び Xcode 6.1 Beta on Yosemite PB3