ruby - 初始化方法的返回值

标签 ruby class return-value

<分区>

比我更精通 ruby​​ 的人可以回答为什么以下没有任何返回吗?

class ThreeAndFive
  def initialize(low_number, high_number)
    @total = 0
    (low_number..high_number).each do |number|
      if (number % 3 == 0 && number % 5 == 0)
        @total += number
      end
    end
    #puts @total here returns value of 33165
    return @total
  end
end

test = ThreeAndFive.new(1,1000)
#This returns nothing but "#<ThreeAndFive:0x25d71f8>"
puts test

puts 测试的结果不应该和我直接在类里面调用 @total 上的 puts 一样吗?

最佳答案

这就是调用 new

时大致发生的情况
def new
  allocate object
  call initialize method on object
  return object
end

这就是为什么您不能返回 @total 而是获取对象本身的原因。

关于ruby - 初始化方法的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39925535/

相关文章:

Ruby:从循环迭代方法中返回更清晰的结果

Sinatra 上的 ruby : Imitate a request based on a parameter

Ruby 推送和删除错误?

ruby-on-rails - 如何在 Feed 上提交多态评论? [错误]

c++ - 如何为包含另一个类的类编写构造函数?

c - 如何返回多个值并将它们存储在 main() 函数中?

ruby - 在 Ruby 的类范围内声明 "instance"变量有什么缺点?

java - 扩展或作为参数传递

未找到 PHP 类

java - Android - 从另一个类调用 boolean 值