我有一个函数返回一串内插的ruby值。
def test_field_name
"#{self.test_field.test.name} #{self.result.position if self.result.sequence.results.count > 1} - #{self.test_field.name}"
end
如果它存在,我无法弄清楚如何将self.result.position
括在括号中,但如果它不存在则将括号括起来。
我希望两个可能的输出是:
TestName - TestFieldName
或
TestName (2) - TestFieldName
答案 0 :(得分:1)
你真的需要一行吗?
您可以执行以下操作:
def test_field_name
arr = [self.test_field.test.name]
arr << "(#{self.result.position})" if self.result.sequence.results.count > 1
arr << "- #{self.test_field.name}"
arr.join(' ')
end
但如果你真的想在一行中做到这一点,那么解决方案可能是:
def test_field_name
"#{self.test_field.test.name}#{(' (' + self.result.position + ')') if self.result.sequence.results.count > 1} - #{self.test_field.name}"
end
答案 1 :(得分:0)
添加另一种方法,用if...else
分支封装逻辑。
def test_field_name
"#{self.test_field.test.name} #{self.result_position}- #{self.test_field.name}"
end
def result_position
self.result.sequence.results.count > 1 ? "(#{self.result.position}) " : ""
end