<%if @item.rigged %>Yes<%else%>No<%end%>
Saya sedang memikirkan sesuatu seperti ini?
if @item.rigged ? "Yes" : "No"
Tapi itu tidak berhasil. Ruby memiliki ||=tetapi saya bahkan tidak yakin bagaimana cara menggunakannya.
<%if @item.rigged %>Yes<%else%>No<%end%>
Saya sedang memikirkan sesuatu seperti ini?
if @item.rigged ? "Yes" : "No"
Tapi itu tidak berhasil. Ruby memiliki ||=tetapi saya bahkan tidak yakin bagaimana cara menggunakannya.
Jawaban:
Hapus ifdariif @item.rigged ? "Yes" : "No"
Operator ternary memiliki formulir condition ? if_true : if_false
s/that/not that :)
Di Ruby, kondisi dan thenbagian dari ifekspresi harus dipisahkan oleh pemisah ekspresi (yaitu ;atau baris baru) atau thenkata kunci.
Jadi, semua ini akan berhasil:
if @item.rigged then 'Yes' else 'No' end
if @item.rigged; 'Yes' else 'No' end
if @item.rigged
'Yes' else 'No' end
Ada juga operator kondisional di Ruby, tetapi itu sama sekali tidak perlu. Operator bersyarat diperlukan dalam C, karena itu adalah operator: dalam C, ifadalah pernyataan dan dengan demikian tidak dapat mengembalikan nilai, jadi jika Anda ingin mengembalikan nilai, Anda perlu menggunakan sesuatu yang dapat mengembalikan nilai. Dan satu-satunya hal dalam C yang dapat mengembalikan nilai adalah fungsi dan operator, dan karena tidak mungkin untuk membuat iffungsi di C, Anda memerlukan operator.
Di Ruby, bagaimanapun, ifadalah sebuah ekspresi. Faktanya, semuanya adalah ekspresi di Ruby, sehingga sudah dapat mengembalikan nilai. Bahkan operator kondisional tidak perlu ada , apalagi menggunakannya.
BTW: sudah biasa menyebutkan metode yang digunakan untuk mengajukan pertanyaan dengan tanda tanya di akhir, seperti ini:
@item.rigged?
Ini menunjukkan masalah lain dengan menggunakan operator kondisional di Ruby:
@item.rigged? ? 'Yes' : 'No'
Sangat sulit untuk membaca dengan beberapa tanda tanya yang dekat satu sama lain.
Satu baris jika:
<statement> if <condition>
Kasus Anda:
"Yes" if @item.rigged
"No" if !@item.rigged # or: "No" unless @item.rigged
"No" unless @item.riggeduntuk mencegah!
nilbukan 'Yes'jika item.riggedbenar. Baris tunggal jika atau kecuali pernyataan kembali niljika kondisinya tidak terpenuhi.
Dari yang aku tahu
3 satu baris
a = 10 if <condition>contoh:
a = 10 if true # a = 10
b = 10 if false # b = nil
a = 10 unless <condition>contoh:
a = 10 unless false # a = 10
b = 10 unless true # b = nil
a = <condition> ? <a> : <b>contoh:
a = true ? 10 : 100 # a = 10
a = false ? 10 : 100 # a = 100
Saya harap ini membantu.
Konstruksi shell dan C one-line berfungsi (ruby 1.9.3p429):
# Shell format
irb(main):022:0> true && "Yes" || "No"
=> "Yes"
irb(main):023:0> false && "Yes" || "No"
=> "No"
# C format
irb(main):024:0> true ? "Yes" : "No"
=> "Yes"
irb(main):025:0> false ? "Yes" : "No"
=> "No"
jika kondisi lain dapat ditutupi dengan operator ternary
@item.rigged? ? 'Yes' : 'No'
Kamu bisa memakai ----
(@ item.rigged)? "Ya Tidak"
Jika @ item.rigged benar, ia akan mengembalikan 'Ya' jika tidak maka akan kembali 'Tidak'