Swift入門?う~ん。。
構文解析技術を持たない連中がでっちあげたゴミ言語
次のコードを見てください。
var a:Int=1 var b:Int= 2 // Postfix '=' is reserved var c:Int =3 // Prefix '=' is reserved var d:Int = 4このコードでbとcがコンパイルエラーになることを納得しますか?
b,cはエラーになります。エラー内容を後ろにコメントで付けました。
とても高級言語とは思えません。 低機能のシェルと同程度かあるいは以下です。
次のコードはどうでしょう?
var e:Int=-1 //Consecutive declarations on a line must be separated by ';' var f:Int= -2 //Postfix '=' is reserved var g:Int =-3 //Consecutive declarations on a line must be separated by ';' var h:Int = -4なんとh以外はエラーになります。
しかもエラーメッセージのなんと的外れなことでしょう!
次のコードも多くの行がエラーになります。
if a==1 {print("a==1") } if a== 1 {print("a== 1") }//Braced block of statements is anused closure if a ==1 {print("a ==1") }//Braced block of statements is anused closure if a == 1{print("a == 1")} if a!=1 {print("a!=1") }//Cannot force unwarp of non-optional type 'Int' if a!= 1 {print("a!= 1") }//Postfix '=' is reserved if a !=1 {print("a !=1") }//Excepted '{' after 'if' condition if a != 1{print("a != 1")}
演算子は基本的に前後に空白を置く必要があるのです。貧相なシェル記述と同じです。
それにしてもエラーメッセージのトンチンカンなこと。
まあ、コンパイルエラーとなるものは許すとしましょう。が!
なんと!空白の有り無しで動作が変わることがあるのです。
let val1:Int = test3() +test4() // 足し算されない let val2:Int = test3() + test4() // 足し算される print("val1="+String(val1)+" val2="+String(val2)); // val1=3 val2=7これはさすがにダメでしょう。
「文の終わりを';'で示す必要がない」などという大して意味のないことのためにプログラムをとんでもない危険にさらしているのです。
この1件だけでswiftを完全拒否する十分な理由となります。
Swiftのオープンソース化
結局構文解析技術を持たない連中が色々やってみたけど無理だったということでしょう。
なので世の中の構文解析技術を持っているであろう人々の手にゆだねる。 自分たちの能力の欠如を認識した賢明な判断ではあります。
オープンソース化によって まともな言語になることを期待はしますが、動きをみるとfor(初期化;判断;変更)文を無くそうとか余り良い方向に向かっていないような。。。
せめてExceptionくらい欲しい
swift3にはまだException機構はありません。
あるのはあくまでエラー通知機構であって、通常のreturnとは別途、エラー時にenumを戻すことができるというだけです。
あくまで想定内の戻し値であって、例外対応ではありません。
nilアクセスなどの例外事象をキャッチすることはできないのです。
javascript以下です。貧しい言語だ。
行の終わりを見て文の終わりを判断するなどというバカはやめてシンプルにセミコロン;にして欲しい。
暗黙の型変換を用意してほしい。Float->CGFloatなど。
(初期化;判断;再設定)型のfor文を復活して欲しい。
++,--を復活して欲しい。
| 固定リンク