2016-11-19 18 views
0

从这个代码,我想最后一行:puts computer_number回报3.如何更改每种方法中的值?

但现在它`5

我该怎么办呢?

def find_at_risk_square(square, computer_number) 
    WIN.each do |n| 
    array = [] 
    n.each do |k| 
     array << square[k] 
    end 
    if array.count("X") == 2 
     computer_number = array.index(" ") + 1 
    end 
    end 
end 

WIN = [[1, 2, 3], 
     [4, 5, 6], 
     [7, 8, 9], 
     [1, 4, 7], 
     [2, 5, 8], 
     [3, 6, 9], 
     [1, 5, 9], 
     [3, 5, 7]].freeze 

square = {1=>"X",2=>"X",3=>" ",4=>" ",5=>" ",6=>" "} 
computer_number = "5" 
find_at_risk_square(square, computer_number) 
puts computer_number 

回答

1

可以在.each循环变化值。你不能从这样的方法返回一个值。

当你在你的方法中做了computer_number = array.index(" ") + 1,你正在分配一个方法局部变量。这不会影响外部世界,无论是否在.each方法。

+0

谢谢你的帮助。这对我来说是非常有用的。 –