나는 이것을 알기위한 유용한 이유가 없다. 그러나 스칼라 변수 (가변적 인 것) 또는 단순한 무언가 (변경 불가능한 것)의 이름 인 경우 $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