私は今まで BitArray を使用したことがなく、今回少しハマったのでメモ。
Array リテラル
#( <value>, <value>, ... )
+ MAXScript言語リファレンス
+ コレクション
+ コレクションのタイプ
+ 配列の値
BitArray リテラル
#{ <selection> }
<selection> は、カンマで区切られた次のリスト
<integer>
<integer> .. <integer>
+ MAXScript言語リファレンス
+ コレクション
+ コレクションのタイプ
+ BitArray値
■Array と BitArray の違いは何ですか。
MAXScript の配列には任意の数の要素が格納でき、各要素は、整数、浮動小数点、文字列、Point3 値、カラー、あるいは他の配列のどれでもかまいません。
一方 BitArray に格納できるのは、1 つのタイプの情報のみです。名は体を表すというように、このタイプとは単一のビット、
すなわちバイナリ ディジットのことです。ビットは(1, true) に設定されるか、(0, false)に設定されないかのどちらかです。
つまり、BitArray に保存できるのは、バイナリ情報、すなわち true または false 値を表す任意の数のビットだけです。
bitArray は 1 バイト内に 8 つの値を保存できるので非常にメモリ効率が高いのですが、通常の配列の場合、1 つの要素が
1 つの値を保存するために数バイトが必要になります。
選択状態などの面のプロパティを取得および設定する場合には、bitArray が非常に有用です。
bitArray を Array に変換したり、true および false 値しか格納していない Array を bitArray に変換することが可能です。
+ MAXScriptに関する質問と回答
+ MAXScriptの構文と用語
+ Array と BitArray の違いはなんですか。
つまり、
a = #(5, 10, 15, 20)
b = #{5, 10, 15, 20}
は全く別物であり、インデクサでアクセスした際の返り値も以下のように違う結果が返ってくる
a[1] → 5
b[1] → false
# ()と{},小さいフォントだと分かり辛くて小一時間悩みました