Ruby - 如何基于另一个布尔变量分配多个变量?

时间:2013-06-29 17:39:04

标签: ruby

我正在尝试:

the_tag= line[2..5]
rec_id_line = (line[2]=='@')? true : false

new_contents,new_to_close= 
  rec_id_line? open_id_tag(indent,line) : open_tag(indent,the_tag,last_field)

这两个方法都返回两个值(顺便说一句,我在这里重构)

即。对于这两个变量,我想要调用open_id_tag(2 params),否则open_tag(3 params),具体取决于true / false rec_id_line值。

1 个答案:

答案 0 :(得分:2)

您只需在rec_id_line?之间加一个空格:

new_contents, new_to_close = rec_id_line ? open_id_tag(indent, line) : open_tag(indent, the_tag, last_field)

此外line[2]=='@'可能返回一个布尔值,因此可以简化第二行:

rec_id_line = (line[2] == '@')

或两者合并:

new_contents, new_to_close = (line[2] == '@') ? open_id_tag(indent, line) : open_tag(indent, the_tag, last_field)