3
:数字リテラルはいつデフォルトの型に割り当てられますか?私はいくつかのコードで遊んで、次の観察を行った
let x = 1;
let() = x;
error: mismatched types [E0308]
note: expected type `_`
note: found type `()`
これは明らかに失敗したが、私は、予想されるタイプがi32
、ない_
た状態にエラーを期待していました。私は、同じことが不特定の型の浮動リテラルで起こることを発見しました。 1.0
。
なぜそうですか?タイプは既にデフォルトとして知られていますか?
更新は:錆1.12のように、エラーメッセージがより有益である:
expected integral variable, found()
= note: expected type `{integer}`
= note: found type `()`
私は失敗があまりにも明白だと思います。タイプチェッカーは実際にデフォルトを挿入するのに十分な距離には達していませんでした。なぜならこれはこれまでどおりに動作する方法がないからです。私はクロージャとジェネリックメソッドの深刻な混乱であったときにエラーメッセージのデフォルトを見たことがあります –