私はこれを知るにあたって有用な理由はありませんが、スカラー変数(変更可能なもの)または単なる何か(不変のもの)の名前であれば、$x
などの名前が付いていたのでしょうか?私は何かを達成しようとはしていない。これは好奇心です。何かがPerl 6のコンテナであるかどうかを知るには?
私はこのようなもので遊んでました:
my @a = 'a', ('b', 'c');
my @b = 'd', 'e', 'f', @a;
my @ab = @a, @b, (1, 2);
for @ab {
put "name: {.^name} VAR: { .VAR.^name }";
when .VAR.can('FETCH') { put "Container: $_" }
when .VAR.can('STORE') { put "Container: $_" }
when Scalar { put "Scalar container: $_" }
when Array { put "Array Container: $_" }
default { put "Object: $_" }
}
私が手:
name: Array VAR: Scalar
Array Container: a b c
name: Array VAR: Scalar
Array Container: d e f a b c
name: List VAR: Scalar
Object: 1 2
は、私は種類にArray
タイプの一致を一致させることができることを見ることができますが、私は何かができることを確認する考えFETCH
またはSTORE
が適切に一致します。
「VAR」について既に知っているようにあなたが何を求めているのか不明です。低レベルではネイティブコンテナの 'nqp :: iscont'、' nqp :: isrwcont'、 'nqp :: iscont_ [ins]'もあります。 – Christoph
VARのチェックがうまくいかないようです。私は後で答えを改めるつもりです。 –
配列はその値をコンテナ化することを忘れないでください。したがって、あなたの例では、 '@ ab'のすべての要素は、' @ ab'に入れる前にコンテナにラップされていてもコンテナにラップされます。 – smls