簡體   English   中英

在Ruby代碼中使用空格(三元運算符)

[英]Using whitespace in Ruby code (the ternary operator)

考慮到這段代碼:

values = ["one", "two", "", "four"]

values.each do |value|
puts value.empty? ? "emptyness" : "#{value} is #{value.length}"
end

是否有可能在Ruby 1.8.7中格式化三元運算符縮進操作數? 就像是:

puts value.empty?
    ? "emptyness" 
    : "#{value} is #{value.length}"

但這顯然不會奏效。

使用Ruby本身沒有轉義的方法是讓Ruby知道它正在等待更多信息

puts value.empty?  ?
  "emptyness" :
  "#{value} is #{value.length}"

這樣做的原因是Ruby看到了三元組的部分,並且知道完成語句需要更多的東西。

在OP的代碼中使用括號不起作用,語句仍然是部分的,Ruby不知道如何處理? 並且:在下一行。

當然,你真的不需要三元:

values = ["one", "two", "", "four"]

values.each do |value|
  puts value.empty? && "emptyness" ||
    "#{value} is #{value.length}"
end

您可以使用字符\\將命令拆分為換行符。

這將有效:

values = ["one", "two", "", "four"]

values.each do |value|
   puts value.empty? \
     ? "emptyness" \
     : "#{value} is #{value.length}"
end

此外,在\\字符或語法錯誤引發后,您不能有任何空格。

當三元運算符需要分成多行時,可能需要使用if代替:

puts if value.empty?
       "emptyness"
     else
       "#{value} is #{value.length}"
     end

這是有效的,因為如果像Ruby中的任何其他表達式一樣有結果。 該結果是thenelse部分的結果,無論哪個執行(如果條件為false且沒有else部分,則if的結果為nil)。

暫無
暫無

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

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