2013-06-29 101 views
0

我試圖做的事: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值。

回答

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)