2012-05-05 114 views
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 

我認爲新會使用初始化方法和設置的屬性?

回答

4

您需要的是initialize方法中的instance variable。您通過在@前加上名稱來創建一個實例變量。當你用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 
+1

你也可以調用setter:'self.rows = 9; self.columns = 9,self.name ='我的Sudoku'。 –

相關問題