簡體   English   中英

為什么“ ||” 運算符返回'[]'?

[英]Why does '||' operator return '[ ]'?

我在控制台上對此進行了測試:

[] || 1 # => []

它不應該返回退出的值,而不是返回[]嗎? 我可以將其更改為三元運算符,它可以正常工作,但是為什么上述條件不起作用?

因為[]在Ruby中是真實值,所以表達式的第二部分永遠不會執行,因此它的總值為[] 在Ruby中,只有falsenil是不正確的。

哦,無論如何,您不需要。 如果數組為空,則map返回一個空數組。

Model.new(
  name: abc.name,
  description: abc.description,
  product_ids: abc.product_ids.map(&:id) 
)

||的確切語義 是:

  1. 如果第一個表達式不是nilfalse ,則返回它
  2. 如果第一個表達式為nilfalse ,則返回第二個表達式

因此,由於[]是真實的,因此它將評估為[] ,如@Ursus所解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM