ボックス化とアンボックス化
💡 お知らせ: このドキュメントはAIによって翻訳されています。表現に違和感がある場合は、原文(英語)を参照するか、翻訳にご協力ください。
Java とは異なり、Flix が値の暗黙的なボックス化(Boxing)やアンボックス化(Unboxing)を行うことは決してありません。
私たちは、自動ボックス化は設計上の欠陥であると考えており、サポートする予定はありません。したがって、プリミティブ値は手動でボックス化・アンボックス化する必要があります。
ボックス化
次の例は、プリミティブな整数をボックス化する方法を示しています:
def f(x: Int32): String \ IO =
let i = Box.box(x); // Integer
i.toString()
ここで Box.box(x) の呼び出しは Integer オブジェクトを返します。i はオブジェクトなので、toString を呼び出すことができます。ボックス化は純粋な操作ですが、toString の呼び出しは IO エフェクトを持ちます。
アンボックス化
次の例は、2 つの Java の Integer オブジェクトをアンボックス化する方法を示しています:
import java.lang.Integer
def sum(x: Integer, y: Integer): Int32 =
Box.unbox(x) + Box.unbox(y)
ここで Box.unbox の呼び出しは Int32 のプリミティブ値を返します。
アンボックス化は純粋な操作です。