let s: プログラミング言語? = Swift[2]
■ このスレッドは過去ログ倉庫に格納されています
0079名称未設定
2014/08/27(水) 13:34:14.23ID:16tGPY7001 * 0.99 //0 (beta5バグ) 0.99 (beta6修正)
0.99 * 1 //0.99
1 + 0.99 //1 (beta5バグ) 1.99 (beta6修正)
0.99 + 1 //1.99
ところで、現時点beta6での仕様だが、
リテラル(1.0とか、"abc"とか文字で表現された定数値)の扱いが
NSNumberクラス型(正確にはクラスクラスタ)やNSString型になっていて、
一方で変数の扱い var s = "abc"や var i = 1 では、
String型やInt型に型付けされるので慣れないと混乱がある。
上のi = 1を使った
var j = i * 0.99 // jは0となり、こちらは「バグじゃなく仕様です。Xcode6 beta6時点。」となっている。
まず 変数iで左辺がInt型に型推論され、
それに従って0.99のNSNumber型のIntValueである0が適用され、1 * 0が0になるため。
Swiftの強力な型推論は、スクリプト言語のような(見た目も)易しい記述と
ネイティブコードの高速実行(実行中に変数の型チェックをしないで済む)を両立させている。
十数種類もあるメジャーなプログラミング言語候補の中では、
これを両立しているのが今のところSwiftしかない、たぶん。
ただ、上のように、Objective-Cとの連携も絡めた文法の調整などで、まだ流動的な部分はありそう。
■ このスレッドは過去ログ倉庫に格納されています