LoginSignup
7
7

More than 5 years have passed since last update.

Swiftの`nil`は`-∞`よりも小さい ??

Last updated at Posted at 2014-09-27

このポストを見てちょっと確かめてみました。
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が負の数ならば」ですが,somenilならボディが実行されてしまいます。
(本当はif letを使うのが望ましい。)

 
ちなみにBool型では,

nil == true     // false
nil == false    // false

となり,「値がない」ので真にも偽にもならないという直感通りの挙動を示します。

<追記> 実行環境: Xcode 6.0.1 及び Xcode 6.1 Beta on Yosemite PB3

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7