一行if-then没有else子句

时间:2012-04-15 16:38:01

标签: ruby ruby-on-rails-3 if-statement

我有以下代码,我想知道它是否可以压缩到一行:

if self.id
  return if Party.find_by_id(self.id).name.downcase == self.name.downcase
end

我想知道是否还有这句话在一行中。

我知道你可以使用if statement ? then_statement : else_statement,但希望你能在这里看到没有别的东西。也许breakcontinue或类似的东西? (如果你看到它,可以随意对实际代码进行优化 - 这就是这里的目的)

2 个答案:

答案 0 :(得分:6)

简单,只是把它们塞在一起:))

return if self.id && Party.find_by_id(self.id).name.downcase == self.name.downcase

答案 1 :(得分:1)

这些都是等价的:

if some_condition
    do_something
end

if some_condition; do_something; end

do_something if some_condition;

some_condition and do_something

但是,当然,您的示例已经使用了以下两种变体:)