未検査キャスト
💡 お知らせ: このドキュメントはAIによって翻訳されています。表現に違和感がある場合は、原文(英語)を参照するか、翻訳にご協力ください。
Flix は、未検査キャスト(Unchecked cast)、すなわち検査されない型キャストとエフェクトキャストもサポートしています。
未検査型キャスト
未検査型キャスト(Unchecked type cast)は、ある式が特定の型を持つことをコンパイラに指示します。
警告: 型キャストは非常に危険であり、最大限の注意を払って使用しなければなりません!
Flix プログラマは、通常、未検査型キャストを使う必要はまったくないはずです。
例:スーパータイプへの安全なキャスト
以下の式は、String を Object にキャストします:
unchecked_cast("Hello World" as Object)
注:checked_cast 式を使う方が安全です。
例:Null からオブジェクト型への安全なキャスト
以下の式は、(Null 型の)null 値を String にキャストします:
unchecked_cast(null as String)
注:checked_cast 式を使う方が安全です。
例:安全でない型キャスト
以下の式は不正なキャストを含んでおり、実行時に ClassCastException を引き起こします:
unchecked_cast((123, 456) as Integer)
エフェクトキャスト
未検査エフェクトキャスト(Unchecked effect cast)は、ある式が特定のエフェクトを持つことをコンパイラに指示します。
警告: エフェクトキャストは極めて危険であり、細心の注意を払って使用しなければなりません!
Flix プログラマは、通常、未検査エフェクトキャストを使う必要はまったくないはずです。
例:安全でないエフェクトキャスト
純粋でない式を、あたかも純粋であるかのように見せかけることができます:
def main(): Unit =
unchecked_cast(println("Hello World") as _ \ {})
ここでは、IO エフェクトを持つ println を呼び出したうえで、その式が純粋であるかのように見せかけて、明示的かつ安全でない方法でエフェクトを取り除いています。
警告: エフェクトを持つ式を純粋な式にキャストしては絶対にいけません。警告はしましたよ。