Perl 5'in akıllı maç operatörü neden kırılmış olarak değerlendiriliyor? [kapalı]


17

Web'de bir dizi yorum gördüm Perl'in akıllı maç operatörü bozuldu . Başlangıçta Perl 6'nın bir parçası olduğunu biliyorum, daha sonra spesifikasyonun eski bir versiyonundan Perl 5.10'da uygulandı ve daha sonra mevcut Perl 6 spesifikasyonuna uyacak şekilde 5.10.1'de düzeltildi.

Sorun 5.10.1 ve sonraki sürümlerde düzeltildi mi, yoksa akıllı maç operatörünün uygulamada sorun yaratan başka sorunları var mı?

Sorun ne?

Sorunları çözen daha güncel bir sürüm (Perl 6, belki de) var mı?

Düzenleme: Açıklığa kavuşturmak için, ben hatalar hakkında değil, daha ziyade amaçlanan davranış ~~kötü olduğu fikrini soruyorum .


Bu SO üzerinde daha iyi olmaz mıydı?

3
Bu yüzden, bu günlerde kod parçacıklarıyla cevaplanamayan sorulardan nefret ediyor gibi görünüyor.
Sean McMillan

2
Bunun SO'ya ait olduğunu düşünmüyorum, Perl'in akıllı maç operatörünün neden kırılmış olarak kabul edildiğine dair kavramsal bir açıklama istiyor.
yannis

1
Bağlantınızda gördüğüm kadarıyla, akıllı eşlemenin özyinelemeli olduğu (veya) olduğu anlaşılıyor, bu yüzden muhtemelen bir dizi (muhtemelen dolaylı olarak) kendisine bir referans içerdiğinden muhtemelen sonsuz özyinelemeye yol açabilir.
user281377

2
@SeanMcMillan - SO bugünlerde çok şey nefret ediyor: /
Rook

Yanıtlar:


14

İnsanlar genellikle smartmatch operatörünün ortaya given/whençıkardığı sorunları, sözcük sorunu gibi , yapıda ortaya çıkan sorunlarla karıştırırlar $_.

Smartmatch operatörünü yalnızca gerçek anlamıyla kullanırsanız, delirmeyeceğiniz görüşüne geldim. Başka bir durum hakkında söz veremem. Ne $a ~~ $byaptığını anlamaya çalışmak, iyi bir insanı çılgınlık içinde çığlık atmaya ve başka bir programlama dilini tamamen ele geçirmeye yeterlidir.

Ya da en azından, Programlama Perl'in 4. baskısının smartmatch bölümünü düzenlerken Larry'den aldım .


4

Akıllı maç operatörü "kırılmadı" ama çok fazla hata vardı. Perl v5.12 bunu düzeltti ve Perl v5.14 IMHO'yu mükemmelleştirdi. Bu nedenle, sorunuzu cevaplamak için Perl v5.12 ve üstü bu sorunu giderir. Perl v5.10'un sonraki sürümleriyle deneyebilirsiniz, ancak Perl 5.12+ sürümünde daha iyi çalıştığını biliyorum.

Düzenleme: Düzenlemenizi yanıtlamak için bu bloga bakın . Makaleyi okuduktan sonra sorunuzu yeterince cevapladığına inanıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.