我的“返回”声明不起作用

时间:2014-08-22 13:47:00

标签: ruby return

我有这个方法应该从一个常量数组中生成一个随机选择。但该方法不会返回结果。事实上,它不会回报我尝试的任何东西。

以下是代码:

COLORS = ["B", "G", "R", "O", "Y", "P"]

class Computer
  attr_reader :random_code

  def initialize
    @random_code = secret_code
  end

  def secret_code

    sample_code = []

    sample_code << COLORS.sample(4)

    return sample_code

  end

  def add(a, b)
    return a + b
  end


end


c = Computer.new

c.add(5, 10)    

添加&#34;添加&#34;方法只是为了测试它,但它也不起作用。当我说它不起作用时,我的意思是它在控制台中没有显示任何内容。

1 个答案:

答案 0 :(得分:2)

正如@BroiSatse指出的那样,问题只是你没有告诉Ruby在控制台上打印任何东西。

以下是我修复和简化代码的方法:

class Computer
  COLORS = ["B", "G", "R", "O", "Y", "P"]

  attr_reader :random_code

  def initialize
    @random_code = secret_code
  end

  def secret_code
    COLORS.sample(4)
  end

  def add(a, b)
    a + b
  end
end

c = Computer.new
puts c.add(5, 10)

还有一些值得注意的事情:

  1. 如果COLORS是您的Computer类固有的东西,您可以将其拉入类中并使其成为类常量。您可以在课程中引用COLORS as-is,但请记住,如果您想在类定义之外的任何地方引用COLORS,则必须将其称为Computer::COLORS为了访问它。你现在拥有它的方式也很好,这只是一个小代码组织的事情。

  2. 您的secret_code功能可以简化为COLORS.sample(4)。在Ruby中,您不必使用return关键字,并且在不需要时将其保留在外,这是惯用的。函数定义中的最后一个值是返回的值。此外,由于Array#sample已经返回一个数组,因此无需定义空数组[]并添加它。