Saya perlu menetapkan nilai untuk a
itu tergantung pada suatu kondisi.
Apa cara terpendek untuk melakukan ini dengan CoffeeScript?
Misalnya ini adalah bagaimana saya melakukannya dalam JavaScript:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
javascript
coffeescript
ternary-operator
evfwcqcg
sumber
sumber
if else then
</rant>a = true ? 5 : 10
adalah coffeescript yang valid, tetapi tidak berarti struktur ternary, sebaliknya (dalam javascript) artinya:a = true ? true : {5:10}
yang dikenal sebagai hal yang buruk® Selain itua = false ? {5 : 10}
dalam coffeescript maka (dalam javascript) adalah setara dengan:a = true ? false : {5:10}
Untuk apa nilainya, saya pikir itu tidak baik.beast = yeti ? "bear"
atauif yeti? then alert "It's a yeti!"
memanfaatkannya dengan?
cukup baik.if/then/else
sudah merupakan ekspresi dan melakukan hal yang sama. Jika Anda benar-benar melewatkannya, maka Anda lebih terbiasa dengan sintaks C atau JavaScript daripada benar-benar membutuhkannya. Jika itu tidak cukup dibaca, dan kadang-kadang itu terjadi, cukup bungkus seluruh ekspresi dalam tanda kurung. Operator?
telah diselamatkan untuk pemeriksaan yang lebih bermanfaat yang tidak ada dalam JavaScript, seperti yang telah dinyatakan oleh @PaulOliver. Operator eksistensial adalah yang terbaik.Jawaban:
Karena semuanya adalah ekspresi, dan dengan demikian menghasilkan nilai, Anda bisa menggunakannya
if/else
.Anda dapat melihat lebih banyak tentang contoh ekspresi di sini .
sumber
if..then..else
terlalu banyak pengganti untuk apa yang seharusnya menjadi ekspresi singkat. Dan?: Apakah standar yang sudah tertanam di antara banyak bahasa, JavaScript di antara mereka. Terlepas dari semua itu, tampaknya akan dibuat batu pada tahap ini.]if then else
pada baris yang sama, lakukan, itu adalah 7 karakter tambahan untuk kejelasan dan keanggunan yang jauh lebih banyak.->
lebihfunction
atau{ }
lebihbegin .. end
, karena saya suka melihat rasio sinyal terhadap noise yang tinggi, di mana kata-kata dicadangkan untuk logika fungsi-spesifik dan logika operasional sebagian besar diturunkan. untuk simbol.Lihat dokumentasi .
sumber
Dalam hampir semua bahasa ini seharusnya berfungsi sebagai gantinya:
sumber
false
nilai-nilai seperti 0, nol, tidak terdefinisi, ... dan seterusnya&&
tanda benar, jika tidak akan mengembalikan bagian terakhir, yang bukan cara kerja kondiser kondisional.Coffeescript tidak mendukung operator ternary javascript. Inilah alasan dari penulis naskah :
Silakan merujuk ke masalah github: https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802
sumber
Anda juga dapat menulisnya dalam dua pernyataan jika sebagian besar benar digunakan:
Atau gunakan pernyataan peralihan jika Anda membutuhkan lebih banyak kemungkinan:
Dengan boolean mungkin terlalu besar tetapi saya merasa sangat mudah dibaca.
sumber
Versi multiline (mis. Jika Anda perlu menambahkan komentar setelah setiap baris):
sumber
CoffeeScript
tidak memiliki operator ternary. Itu yang dikatakan dokter.Anda masih dapat menggunakan sintaksis seperti
Jauh lebih jelas.
sumber