ruby中的隐式返回值和编译错误

时间:2015-11-27 09:47:00

标签: ruby-on-rails ruby

在ruby中的类中考虑以下代码:

 def isDarkSide
     true
 end 

isDarkSide的返回值为true

但是,当我在以下代码上运行ruby -c时:

  def can_join_group? any
    DeathStar::Tie::BOT, self, nil
  end

我最终遇到以下错误:

dynamic constant assignment
    DeathStar::Tie::BOT, self, nil
                               ^
Can't change the value of self
   DeathStar::Tie::BOT, self, nil
                                     ^
Can't assign to nil
syntax error, unexpected '\n', expecting '='

但是,可以通过编写

来解决问题
  def can_join_group? any
    return DeathStar::Tie::BOT, self, nil
  end

有人可以向我解释为什么我需要使用return关键字?我觉得我错过了一些重要的红宝石语言。

1 个答案:

答案 0 :(得分:2)

要返回多个值,您应该使用显式return或值数组。

1, 2, 3甚至不是有效的Ruby语法。

def multi_return1
  return 1, 2, 3
end

def multi_return2
  [1, 2, 3]
end

multi_return1 == multi_return2
#=> true