我有一个辅助方法:
def get_str(exam)
@value = ""
if exam.is_mc
@value << "MC, "
end
if exam.is_ms
@value << "MS, "
end
if exam.is_ng
@value << "NG"
end
return @value
end
当满足所有这三个条件时,我得到一个字符串:MC, MS, NG
但如果只满足第一个条件,我会得到字符串:MC,
我不想在这种情况下显示逗号。
怎么可能?
答案 0 :(得分:4)
最简单的方法是将连接任务传递给Array#join
。
def get_str(exam)
@value = []
@value << "MC" if exam.is_mc
@value << "MS" if exam.is_ms
@value << "NG" if exam.is_ng
@value = @value.join ', '
end
希望它有所帮助。
答案 1 :(得分:0)
这也可以:
def get_str(exam)
['MC', 'MS', 'NG'].select{|i| exam.send("is_#{i.downcase}").join(', ')
end
唯一真正的好处是,添加更多字符串模式会更容易。