为什么这个方法没有初始化显示的变量?

时间:2012-05-05 04:58:18

标签: ruby

我没有,没有,但我预计结果为9,'我的数独'

class Soduko
  attr_accessor :name, :rows, :columns
  def initialize
    rows = 9
    columns = 9
    name = 'My Soduko'
  end
end

new_soduko= Soduko.new
puts new_soduko.rows
puts new_soduko.name

$ ruby soduko.rb 
nil
nil

我认为new会使用initialize方法并设置这些属性吗?

1 个答案:

答案 0 :(得分:4)

您需要的是instance variable方法中的initialize。您可以通过在名称前加上@来创建实例变量。使用new_soduko = Soduko.new创建新的Soduko对象时,您需要为该特定对象设置实例变量。没有@,你刚刚在initialize方法中创建了局部变量。

class Soduko
  attr_accessor :name, :rows, :columns
  def initialize
    @rows = 9          # adding @ makes these instance variables.
    @columns = 9
    @name = 'My Soduko'
  end
end

new_soduko= Soduko.new
puts new_soduko.rows
puts new_soduko.name