Jeśli naprawdę chcesz zmienić wersję Array
, możesz po prostu utworzyć klasę, która dziedziczy po niej i nadpisuje metody, które chcesz inaczej zachowywać. (Istnieją prawdopodobnie znacznie bardziej elegancki sposób, aby to zrobić, ale to działa):
class Tuple is Array {
method append (*@val) {
fail '"append" is disabled for Tuples'
}
}
my $t = Tuple.new(1,2);
say $t;
$t.append(3);
Wtedy to będzie działać jak można się spodziewać:
[1 2]
"append" is disabled for Tuples
in method append at example.p6 line 2
in block <unit> at example.p6 line 11
Actually thrown at:
in block <unit> at example.p6 line 11
Naprzemiennie dostać coś podobnego można użyć zwymiarowana tablica as mentioned by raiph. Lub, jeśli po prostu chcesz czegoś niezmiennego, który jest podobny do tablicy, możesz użyć List
.