<%if @item.rigged %>Yes<%else%>No<%end%>
ฉันคิดถึงสิ่งนี้
if @item.rigged ? "Yes" : "No"
แต่มันไม่ทำงาน ทับทิมมี||=
แต่ฉันไม่แน่ใจด้วยซ้ำว่าจะใช้สิ่งนั้นอย่างไร
<%if @item.rigged %>Yes<%else%>No<%end%>
ฉันคิดถึงสิ่งนี้
if @item.rigged ? "Yes" : "No"
แต่มันไม่ทำงาน ทับทิมมี||=
แต่ฉันไม่แน่ใจด้วยซ้ำว่าจะใช้สิ่งนั้นอย่างไร
คำตอบ:
ลบออกif
จากif @item.rigged ? "Yes" : "No"
ผู้ประกอบการที่สามมีรูปแบบ condition ? if_true : if_false
s/that/not that
:)
ใน Ruby เงื่อนไขและthen
ส่วนของif
นิพจน์ต้องถูกคั่นด้วยตัวคั่นนิพจน์ (เช่น;
หรือขึ้นบรรทัดใหม่) หรือthen
คำสำคัญ
ดังนั้นสิ่งเหล่านี้จะได้ผล:
if @item.rigged then 'Yes' else 'No' end
if @item.rigged; 'Yes' else 'No' end
if @item.rigged
'Yes' else 'No' end
นอกจากนี้ยังมีโอเปอเรเตอร์ที่มีเงื่อนไขใน Ruby แต่ไม่จำเป็นอย่างสมบูรณ์ จำเป็นต้องใช้โอเปอเรเตอร์ตามเงื่อนไขใน C เนื่องจากเป็นโอเปอเรเตอร์: ใน C if
เป็นคำสั่งและไม่สามารถส่งคืนค่าได้ดังนั้นหากคุณต้องการส่งคืนค่าคุณต้องใช้สิ่งที่สามารถคืนค่าได้ และสิ่งเดียวใน C ที่สามารถส่งคืนค่าคือฟังก์ชั่นและตัวดำเนินการและเนื่องจากมันเป็นไปไม่ได้ที่จะสร้างif
ฟังก์ชั่นใน C คุณจึงต้องมีโอเปอเรเตอร์
อย่างไรก็ตามใน Ruby if
เป็นนิพจน์ ในความเป็นจริงทุกอย่างคือการแสดงออกในรูบีจึงอยู่แล้วสามารถกลับค่า ไม่มีความจำเป็นสำหรับผู้ประกอบการที่มีเงื่อนไขที่จะได้ไม่เป็นที่มีอยู่ให้อยู่คนเดียวใช้มัน
BTW: มันเป็นธรรมเนียมของวิธีการตั้งชื่อซึ่งใช้ในการถามคำถามที่มีเครื่องหมายคำถามในตอนท้ายดังนี้:
@item.rigged?
สิ่งนี้แสดงให้เห็นปัญหาอื่นเกี่ยวกับการใช้ตัวดำเนินการเงื่อนไขใน Ruby:
@item.rigged? ? 'Yes' : 'No'
เป็นการยากที่จะอ่านด้วยเครื่องหมายคำถามหลาย ๆ ตัวที่อยู่ติดกัน
หนึ่งบรรทัดถ้า:
<statement> if <condition>
กรณีของคุณ:
"Yes" if @item.rigged
"No" if !@item.rigged # or: "No" unless @item.rigged
"No" unless @item.rigged
เพื่อป้องกันการ!
nil
แทน'Yes'
ถ้าitem.rigged
เป็นความจริง บรรทัดเดียวถ้าหรือถ้าคำสั่งกลับnil
ถ้าเงื่อนไขไม่เป็นไปตาม
จากสิ่งที่ฉันรู้
3 หนึ่งสมุทร
a = 10 if <condition>
ตัวอย่าง:
a = 10 if true # a = 10
b = 10 if false # b = nil
a = 10 unless <condition>
ตัวอย่าง:
a = 10 unless false # a = 10
b = 10 unless true # b = nil
a = <condition> ? <a> : <b>
ตัวอย่าง:
a = true ? 10 : 100 # a = 10
a = false ? 10 : 100 # a = 100
ฉันหวังว่ามันจะช่วย
ทั้งการสร้างเชลล์และ C แบบบรรทัดเดียว (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"
หากเงื่อนไขอื่นสามารถครอบคลุมกับผู้ประกอบการที่ประกอบไปด้วย
@item.rigged? ? 'Yes' : 'No'
เพื่อความง่ายถ้าคุณต้องใช้ค่าเริ่มต้นถ้าไม่มีคุณสามารถใช้:
@something.nil? = "No" || "Yes"
คุณสามารถใช้ได้ ----
(@ item.rigged)? "ใช่ไม่ใช่"
หาก @ item.rigged เป็นจริงมันจะส่งคืน 'ใช่' มิฉะนั้นจะส่งคืน 'ไม่'