Pendekatan yang lebih bijak ialah menulis fungsi yang menggunakan banyak pernyataan bersyarat untuk mengembalikan nilai tambahan berdasarkan julat berangka yang berbeza
P粉311464935
2023-08-17 23:18:09
<p>Saya cuba menulis fungsi yang mengembalikan nilai tertentu jika input berada dalam julat nombor tertentu. </p>
<p>Biasanya, saya akan menulis satu siri pernyataan if/else if untuk menyelesaikan tugasan ini. Walau bagaimanapun, saya berurusan dengan sebilangan besar julat, jadi menulis 30+ if/else jika kenyataan kelihatan tidak cekap. </p>
<p>Andaikan saya mempunyai nombor minimum dan maksimum untuk julat keseluruhan dan saya mahu membahagikannya kepada julat yang lebih kecil. Untuk setiap julat saya ingin mengembalikan beberapa nilai. Sebaik-baiknya, nilai pulangan untuk setiap julat akan dikurangkan dengan beberapa nombor tetap. </p>
<p>Untuk menyediakan konteks, saya cuba mengira nilai berdasarkan perbatuan menggunakan sesuatu seperti ini. Sebagai contoh, jika perbatuan adalah antara 101-120 batu, kadarnya adalah sama dengan 80% daripada perbatuan. Peratusan berkurangan apabila perbatuan meningkat. Selain itu, nilai peratusan penurunan boleh menjadi nombor tetap (seperti <kod>-0.05</kod>)</p>
<pre class="brush:php;toolbar:false;">...
lain jika (m >= 101 && m <= 120) kembalikan 0.80
lain jika (m >= 121 && m <= 140) kembalikan 0.75
...</pra>
<p>Memandangkan terdapat corak dalam nilai pulangan untuk setiap julat, saya fikir ia boleh dilakukan dengan cara yang lebih baik daripada menulis sekumpulan pernyataan if/else, tetapi saya tidak pasti caranya. Ada idea? </p>
Contoh anda tidak meningkat sebanyak 15; jadi, saya mengandaikan itu salah taip.
Saya akan menggunakan fungsi untuk menyelesaikannya. Contohnya: