Saya telah memikirkan bagaimana saya akan mendesain kisaran literal "sempurna" jika saya ingin mendesain bahasa. Bagi Anda yang tidak tahu, ketahui rentang literal dalam pernyataan yang mewakili kisaran nilai, seperti 1-4. Mereka paling sering digunakan untuk foreach loop
Tampaknya ada beberapa masalah yang harus dipertimbangkan
Dukungan untuk rentang inklusif dan eksklusif, menempel pada +1 atau -1 ke titik akhir tampaknya agak jelek dan tidak sesuai kesalahan.
Dukungan untuk melangkah, sehingga Anda dapat membuat kisaran angka genap atau ganjil misalnya
Keterbacaan, harus jelas apa yang digambarkan oleh rentang literal
Tidak ambigu, harusnya sama sekali tidak beragama seperti yang digambarkan oleh rentang literal
Defaultnya mungkin dari inklusif ke eksklusif karena itulah yang digunakan dalam kebanyakan kasus untuk pengulangan array dll.
Ngomong-ngomong, salah satu contoh kisaran literal yang pernah saya lihat adalah Ruby yang dalam bentuk 1..3 untuk rentang eksklusif (di ujung) dan 1 ... 3 untuk inklusif (di ujung). Anda juga dapat melakukan 1..10.step (5). Namun setelah pertimbangan yang cermat saya menemukan beberapa hal yang saya tidak suka tentang pendekatan itu (dari pengetahuan saya yang terbatas tentang ruby)
Anda hanya dapat menggambarkan inklusif dan eksklusif untuk bagian akhir. Sementara menggambarkan sebagian besar skenario itu tampaknya sedikit tidak konsisten.
Memvariasikan dengan hanya tambahan. sepertinya resep untuk membuatnya sulit untuk melihat apakah rentang inklusif atau eksklusif. Saya tidak tahu tentang Anda tetapi titik cenderung menjadi sesuatu yang kabur :)
Menambahkan metode seperti notasi untuk rentang tampaknya mencampurkan gagasan literal dengan kelas yang tampaknya sedikit tidak konsisten (bahkan jika rentang dikompilasi ke kelas)
Bagaimanapun, setelah mempertimbangkan berbagai alternatif. Saya datang dengan ini
- [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
Dan seterusnya. Saya suka karena [biasanya melambangkan satu set dan ini agak cocok dengan itu, meskipun ini berbeda dengan satu set akan dipesan.
Satu hal yang saya agak singgung adalah membuat indikator eksklusif / inklusif wajib atau tidak, yaitu jika Anda menulis hanya 1..5 standarnya adalah 1,2,3,4 karena ini adalah kasus yang paling umum dengan array dll Lebih mudah dan lebih mudah dibaca, tetapi kurang spesifik dan jika Anda harus menulis [1..5 [Anda belajar lebih awal tentang cara kerjanya.
Jadi apa yang Anda pikirkan, apakah saya menutupi sebagian besar pangkalan, mengabaikan sesuatu? Anda akan membuat [] wajib? Apakah Anda merancang berbagai literal berbeda dalam bahasa pemrograman Anda?
Calon
- gaya braket: [0..10 [ , dengan langkah: [0..5..20 [
- notasi interval: [0..10) dengan langkah: [0..5..20)
- seru untuk eksklusif. 0 ..! 10, dengan langkah: 0..5 ..! 20
- dengan langkah berbeda. 0 ..! 20, 5
- namun, itu akan membuat default * 0..10 ' inklusif-inklusif
- wordy: [0 to! 20 by 5]
Saya harus mengatakan bahwa favorit saya sejauh ini adalah 0 ..! 10 dan 0..5 ..! 20 , saya hanya berharap standar 0..10 untuk inklusif-eksklusif akan lebih logis
1,5,10,15,20
Gap 4, 5, 5, 5 ?!