投稿

9月, 2014の投稿を表示しています

Swiftのコンパイルエラー寄せ集め

Appleが2014年6月に出してきた新しいプログラミング言語Swiftのコンパイルエラーの収集。こんなプログラムでこんなエラーが出ました、という例をいくつか集めたものです(仕様を読みながらわざとエラーを出したものもかなり含む)。理想を言うならコンパイルの工程を理解した上でそれぞれの説明をしたいのだが、かなり専門的になるのでそこまでは出来ない。 宣言、初期化の実行文 Type annotation missing in pattern 型の指定がない(型がわからない) 【確認ver】Swift 3.0.2【語】annotation 注釈 //Swift 3.0.2 var abc //エラー abcが何の型かわからない。 var abc: Int や var abc = 0 なら型が決まる(推測できる)のでOK。 //Swift 3.0.2 var a, b, c: Int = 0 //エラー Intと=0はcのみに対して適用されるようで、aとbが不確定になる。 var a, b, c: IntならOK。 //Swift 3.0.2 var a, b = 0, c: Int //エラー aに対して、= 0は適用されない(bに対して適用)、Intもaに対して適用されない(間に= 0が適用されたbがあるため?) Cannot assign to value: '***' is a 'let' constant 値を代入できません。***はletで定義された定数です。 【確認ver】Swift 3.0.2【語】assign 割り当てる 値を初期値以外にするならvarで宣言すること。 //Swift 3.0.2 let abc = 0 abc = 1 //エラー //Swift 3.0.2 func funcA(a: Int) { a = 0 //エラー } 関数の引数で与えられたものを関数内で変更しようとした。関数の引数はデフォルトで定数扱い。関数内で変数として使いたいなら関数の頭でvar a = aなどとして書き換え可能にする。 Cannot assign to value: '***' returns immutable value 値を代入できません。***は変更できない