0

我得到零,零,但我预计结果是 9,“我的 Soduko”

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 会使用初始化方法并设置这些属性?

4

1 回答 1

4

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

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
于 2012-05-05T05:09:07.907 回答