Destek genişleme aralığı neden üç (iki nokta) yerine iki nokta kullanıyor?


10

Sonunda neden bash's (ve aynı zamanda zsh) brace genişleme aralığını neden hiç kullanmadım anladım / keşfettim : sözdizimi {1..10}yerine bir üç nokta , yani, bir elips gibi kabul ettiğim şeydir {1...10}.

Neden üç nokta üzerinde iki nokta seçildiğini öğrenebilir miyim? Bilgisayar programlamada elips kullanımı yaygındır ve (Wikipedia) bağlantısında belirtildiği gibi iyi anlaşılmıştır, bu yüzden bu benim merakımı uyandırdı.



3
N1 ile n2n1..n2 arasındaki bir aralığı belirtmek için programlamada kullanımı Perl'den biraz daha önce gelir. Bkz . 1970, bölüm 6.1.2, sayfa 17'deki Pascal Kullanıcı Kılavuzu .
Adaephon

1
Hey yorumcular, yorumlarınızı cevaplara dönüştürmekten çekinmeyin ...? :)
hjk

Bazı diller şimdi bile kullandığını hayal meyal hatırlıyorum ..VS. ...sağ uç noktasını ya da değil dahil olmak üzere, ama yanlış olabilir. (Ruby? O Ruby miydi?)
Ulrich Schwarz

3
@slm Buradaki yakın nedenden dolayı katılmıyorum. Bir şeyin nasıl ortaya çıktığıyla ilgili tarih soruları gerçekten fikir temelli değildir. Yorumlar zaten cevabın sadece bir tarih meselesi olduğunu ve başlığın "nedenine" rağmen buna oldukça sağlam bir şekilde cevap verebileceğini ima etti .
Caleb

Yanıtlar:


7

(yorumlardaki katkılar sayesinde topluluk wiki'si olarak gönderme)

Bash'ten Z Shell'e (Bölüm 8, Sayfa 186, " Kuşaklarla Sayı Üretme ") kitabında bu sözdiziminin Perl'den ödünç alındığı belirtilmektedir .

Buna ek olarak, Pascal'ın 1970'e.. kadar uzanan aralık göstergesine sahip olduğu da önerilmektedir (vurgu madeni) ( bağlantılı PDF'nin " Programlama Dili Pascal ", Bölüm 6.1.2, Sayfa 17).

Sonuç olarak, sorudaki Wikipedia bağlantısı bile nerede ..kullanıldığı konusunda bazı örnekler verdi . Bir üç nokta işaretinin , noktalama işareti olduğu için kesinlikle üç noktadan oluşan bir dizi olarak tanımlandığı varsayımı burada doğru değildir.

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.