Ben bir dizi bu sözdizimini kullanmaya çalıştıNeden == dizilerle çalışmıyor?
$x ||= 1;
gibi değişkenler için varsayılan değerler sağlamak için ||=
operatörü kullanan ancak bir sözdizimi hatası var:
@array||= 1..3;
Can't modify array dereference in logical or assignment (||=) ...
Ne anlama geliyor ve nasıl varsayılan değerler içeren diziler sağlamalı mıyım? Çünkü ||
bir skalar işleç olduğundan
'||' değil buna işlenen bıraktı üzerinde skaler bağlamını empoze yapar rağmen bir sayıl operatörü. Perlop'tan: "Skaler veya liste içeriği değerlendirilirse sağ işlenene doğru ilerler." "perl -MData :: Dump = dump -e" @a = 0 || (1 .. 3); dökümü (\ @ a) "baskı" [1, 2, 3] ' –
*" yolu yoktur hiçbir zaman başlatılmamış bir dizi ile boş listeye atanmış bir dizi arasındaki farkı söyleyin. * Farkı söylemek sadece imkansız değildir: * fark yoktur *. – Borodin
Bu cevap tamamen yanlış. 'perl -le'print 0 || 1..3 '' 123 'yazdırır, baskı skalar (1..3) gibi boş bir satır yazmaz. – ikegami