Saya hanya memikirkan sesuatu yang akan sangat keren untuk dimiliki dalam kontrol if-elif-else.
if condition:
stuff()
elif condition:
otherstuff()
then:
stuff_that_applies_to_both()
else:
stuff_that_doesnt_aply_to_either()
Jadi pada dasarnya a then
akan dijalankan ketika salah satu kondisi dijalankan KECUALI kondisi yang lain. Apakah Anda pikir ini berguna? Ini mirip dengan coba-kecuali-yang lain dari python.
Saya pikir beberapa dari Anda sedang merencanakan implementasi yang sangat awal. The then
blok akan menjadi seperti else
blok di try-except
blok di python. Alasan sebenarnya saya menyarankan ini adalah untuk situasi seperti ini.
m = {}
if condition == '1':
m['condition'] = condition
elif condition2 == '3':
m['condition2'] = condition2
elif condition3 == 'False':
m['condition3'] = True
then:
run_test_that_relies_on_one_of_the_conditions_being_true()
return m
The then
blok scoped untuk yang pertama jika seperti else
ini. Jadi bersarang berfungsi dengan baik. Dan jika Anda perlu menjalankan metode sebelum pernyataan if, itu benar-benar tidak ada hubungannya dengan use case ini.
finally
di Jawa?then
agak membingungkan. Biasanyathen
tersirat terjadi setelah suatuif
. Maksud saya, Anda katakanif condition, then stuff()
tetapi kemudian lanjutkan untuk mengatakanthen stuff that applies to both
Jawaban:
Saya pikir itu terlihat mengerikan. Jika Anda ingin kode dijalankan setelah berbagai kondisi, maka (a) periksa kembali kondisi tersebut atau (b) tetapkan variabel ke status keberhasilan yang ditunjukkan.
sumber
Secara umum Anda sudah bisa melakukan ini dengan switch / kasing dan saklar / kasing memberikan kontrol yang lebih baik atas apa yang Anda usulkan.
Itu juga tidak membaca dengan benar secara logis. Jika A lain jika B maka C. Tidak menyiratkan kepada seseorang bahwa C akan dieksekusi jika A atau B dinilai benar.
sumber
Menarik, tetapi bagi saya (diakui agak diatur dalam cara saya) undangan untuk keterbacaan, logika, dan masalah sintaksis.
Sunting:
If-elif Anda sangat sederhana - bagaimana jika ada 10 elif? 20? Apakah semua kondisi harus benar? Apa peluangnya?If-elif Anda sangat sederhana - bagaimana jika ada 10 elif? 20? Bukankah itu membuat ini cukup terbaca?
Juga, dapat dengan mudah dicapai dengan metodologi yang telah terbukti:
Apa yang terjadi jika "stuff_that_applies_to_both" perlu terjadi sebelum masing-masing langkah? Kode Anda tidak menangani kasus ini:
Akhirnya, sintaks ini memungkinkan fleksibilitas yang lebih besar dengan lebih banyak kondisi: if (thisCondition atau thatCondition atau otherCondition) {stuff_that_applies_to_all ();
Saya telah menggunakan if / else, tetapi bisa dengan mudah menggunakan pernyataan switch dengan flag:
Perhatikan bahwa saya tidak benar-benar memerlukan flag conditionApplies - saya bisa menambahkan fungsi "stuff_that_applies_to_both ()" untuk kedua kondisi non-default - saya hanya melakukan ini sehingga lebih mirip sintaks yang ditentukan di atas, meskipun "lalu" daripada yang "lain".
Oleh karena itu, bagi saya tampaknya menjadi sintaksis yang sangat khusus, di mana sintaksis yang lebih umum mengisi tagihan dan banyak lagi.
+1 untuk memikirkan fitur yang mungkin (terus lakukan itu!), Tetapi saya tidak akan memilih untuk mengimplementasikannya.
sumber
what if there were 10 elifs? 20? Would all conditions need to be true?
Itu tidak mungkin. hanya 1 elif yang bisa benar karena berhenti mengevaluasi lebih banyak.Saya tidak keberatan menggunakan sesuatu seperti ini hari ini. Tapi, untuk memastikan saya akan menggunakannya sesering saya menggunakan ulangi sampai.
Kode setidaknya akan terlihat lebih baik tanpa bersarang berlebihan. Meskipun saya lebih suka
Else If
untukelif
. Saya akan menggantiThen
denganDo
dan finalElse
denganOtherwise
.sumber
Sepertinya ide yang keren. Namun satu-satunya masalah yang saya bayangkan adalah Anda lebih rentan terhadap bug. Seperti menulis if / else if dan memanggil blah () pada saat itu. Menulis tambahan lain jika itu tidak ingin bla, menghapus bla dari itu dan menambahkannya ke ifs / elseifs Anda. Kemudian ketika Anda atau programmer lain menambahkan pernyataan lain, Anda mungkin berharap bla dipanggil tetapi tidak.
Atau Anda dapat memiliki beberapa ifs, tulis bla dan lupakan semua seandainya hanya satu yang memerlukan ini yang akan menghancurkan sesuatu. Kemungkinan juga adalah jika Anda membutuhkan mereka untuk mengikuti setiap jika Anda akan meletakkannya di bawah blok if. Mungkin mengatur bool di tempat lain (NoUpdate = true) dan hanya menulis a if (! NoUpdate) {} langsung di bawah yang lebih jelas dan dapat diatur oleh jika
Saya hanya mengatakan sepertinya lebih rentan terhadap bug, bukan berarti saya tidak suka ide itu. Saya tidak keberatan melihatnya dalam bahasa tetapi saya tidak bisa membayangkan situasi di mana saya akan menggunakannya jika bahasa saya mendukungnya.
sumber
Possibly setting a bool in else (NoUpdate=true) and just write a if(!NoUpdate) {} directly under which is clearer and can be set by an if
Inilah yang seharusnya mencegah hal ini. Itulah inti dari pernyataan elif. Elif juga tidak perlu, itu bisa diperiksa dengan pernyataan if, tetapi menjadi rumit.Saya menemukan sintaks Anda membingungkan, tetapi saya melihat beberapa nilai dalam konsep. Secara konseptual, ketika saya mempertimbangkan masalah ini, apa yang saya dambakan adalah "unelse", yang pada dasarnya akan melakukan hal-hal dalam kasus-kasus di mana yang terakhir
else
tidak menyala. Melihatnya dari sudut itu, saya akan menyarankan bahwa seseorang dapat mencapai hasil yang serupa melalui:Pilihan lain dalam beberapa kasus adalah:
Tampak agak jahat, tetapi dalam beberapa kasus mungkin tidak ada cara yang baik untuk mengekspresikan urutan peristiwa yang diinginkan selain menduplikasi kode atau menggunakan
goto
(yang mungkin tidak terlalu buruk, kecuali untuk kartun yang seseorang dapat masukkan di sini).sumber