我正在尝试用新数组替换数组,在我继续使用时替换值。
以下是代码:
minesarray = [['*','.','.','.'],['.','.','*','.'],['.','.','.','.']]
def pp_board(board)
puts Array.new(board[0].size*2+1, '-').join('')
board.each do |row|
puts "|" + row.join("|") + "|"
puts Array.new(row.size*2+1, '-').join('')
end
end
pp_board(minesarray)
count = 0
minesarray.map{ |row|
row.each { |col|
if minesarray[row][col] = '*'
minesarray[row][col]="a"
elif minesarray[row][col] = '.'
minesarray[row][col] = 0
end
}
}
我收到以下错误:
mines2.rb:17:in '[]': can't convert Array into Integer (TypeError)
from mines2.rb:17:in 'block (2 levels) in (main)'
from mines2.rb:16:in 'each'
from mines2.rb:16:in 'block in (main)'
from mines2.rb:15:in 'map'
from mines2.rb:15:in '(main)'
答案 0 :(得分:2)
row
和col
不是数组的索引,而是元素本身。
你可以这样做:
minesarray = [['*','.','.','.'],['.','.','*','.'],['.','.','.','.']]
def pp_board(board)
puts Array.new(board[0].size*2+1, '-').join('')
board.each do |row|
puts "|" + row.join("|") + "|"
puts Array.new(row.size*2+1, '-').join('')
end
end
pp_board(minesarray)
minesarray = minesarray.map { |row|
row.map { |v|
if v == '*'
'a'
elsif v == '.'
'0'
end
}
}
pp_board(minesarray)
答案 1 :(得分:1)
问题是row
和col
不是索引,它们是数组的实际元素。
您还有其他一些问题。 " elif的"应该是elsif
并且您在条件中使用了作业(=
),您应该使用相等性检查(==
)。