Eğer bir dil tasarlayacak olsaydım, "mükemmel" ürün gamını nasıl tasarlayacağımı düşünüyordum. Sizin için bilmediğiniz bir ifadede 1-4 gibi bir değer aralığını temsil eden bir aralık değişmezini bilirsiniz. En çok foreach / foreach döngülerinde kullanılırlar
Göz önünde bulundurulması gereken birkaç konu var gibi görünüyor
Kapsayıcı ve özel aralıklar için destek, uç noktalara +1 veya -1'e yapışmak biraz çirkin ve hataya eğilimli görünüyor.
Adımlama desteği, böylece örneğin çift veya tek sayılar yapabilirsiniz
Okunabilirlik.
Belirsizlik, değişmez aralığın neyi tanımladığını tam olarak anlamsız olmalı
Varsayılan, muhtemelen kapsayıcıdan münhasır olmalıdır, çünkü çoğu durumda diziler üzerinde döngü yapmak için kullanılan şey budur.
Her neyse, gördüğüm aralık değişmezinin bir örneği, özel (sonda) aralık için 1..3 ve kapsayıcı (sonda) için 1 ... 3 şeklinde olan Ruby'dir. Ayrıca 1..10 adımını (5) da yapabilirsiniz. Dikkatle değerlendirdikten sonra bu yaklaşım hakkında hoşlanmadığım birkaç şey buldum (sınırlı yakut bilgimden)
Sadece kapsayıcı ve münhasır sonu tanımlayabilirsiniz. Çoğu senaryoyu tanımlarken biraz tutarsız görünüyor.
Sadece bir ek ile değişir. bir aralığın kapsayıcı veya özel olup olmadığını görmeyi zorlaştırmak için bir tarif gibi görünüyor. Seni bilmiyorum ama nokta bulanık bir şey olma eğilimindedir :)
Aralıklar için gösterim gibi yöntem eklemek, değişmezlik kavramını biraz tutarsız görünen bir sınıfla karıştırır (aralıklar bir sınıfa derlenmiş olsa bile)
Her neyse, farklı alternatifleri düşündükten sonra. Bununla geldim
- [5..1] 5,4,3,2,1
- [1..5 [ 1,2,3,4
- ] 1..5] 2,3,4,5
- [ 0..5..20] 0,5,10,15,20
ve benzerleri. Seviyorum çünkü [normalde bir seti belirtir ve bu bir setin aksine sipariş edilmesine rağmen buna benzer.
Biraz yırtıldığım bir şey, özel / kapsayıcı göstergeleri zorunlu veya değil yapmaktır, yani sadece 1..5 yazarsanız, dizilerdeki en yaygın durum olduğu için varsayılan 1,2,3,4 olur. Daha kolay ve daha okunabilir, ancak daha az belirgin ve yazmak zorunda olsaydınız [1..5 [nasıl çalıştıklarını erken öğrenirsiniz.
Ne düşünüyorsun, çoğu üssü kapladım mı, bir şeyleri gözden kaçırdım mı? [] zorunlu mu yaparsınız? Aralık değişmezlerini programlama dilinizde farklı şekilde tasarlar mısınız?
Adaylar
- köşeli ayraç stili: [0..10 [ , adımla: [0..5..20 [
- aralık gösterimi: [0..10) , adım: [0..5..20)
- münhasır ünlem. 0 ..! 10, adım: 0..5 ..! 20
- farklı adımla. 0 ..! 20, 5
- ancak bu, varsayılan * 0..10 ' dahil (herşey dahil)
- wordy: [0'dan! 20'ye 5]
Şimdiye kadar en sevdiğim estetik olarak 0 ..! 10 ve 0..5 ..! 20 olduğunu söylemeliyim , sadece varsayılan 0..10'un kapsayıcı-özel için daha mantıklı olmasını diliyorum
1,5,10,15,20
Boşluk 4, 5, 5, 5 ?!