红宝石,在一个字符串数组和字符串/整数替换值 [英] Ruby, replacing values in a string array with strings/ints

查看:102
本文介绍了红宝石,在一个字符串数组和字符串/整数替换值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想更换一个新的数组的数组,因为我走替换值。

这里的code:

  minesarray = ['*','','',''],['','','*','。'] ,['。','。','。','。']]高清pp_board(板)
    把Array.new(板[0] .size * 2 + 1,' - ')加入('')。
    board.each做|一行|
        看跌期权| + row.join(|)+|
        把Array.new(row.size * 2 + 1,' - ')加入('')。
    结束
结束pp_board(minesarray)数= 0minesarray.map {|一行|
    row.each {|山口|
        如果minesarray [行] [山口] ='*'
            minesarray [行] [山口] =一个
        ELIF minesarray [行] [山口] =''
            minesarray [行] [山口] = 0
        结束
    }
}

我收到以下错误:

  mines2.rb:17:在'[]':不能转换成数组整数(类型错误)
   从mines2.rb:17:在块(2级)中(主)
   从mines2.rb:16:在每个'
   从mines2.rb:16:'块(主)
   从mines2.rb:15:在地图
   从mines2.rb:15:在(主)


解决方案

山坳不是该阵列的索引,但该元素本身。

您可以做象下面这样:

  minesarray = ['*','','',''],['','','*','。'] ,['。','。','。','。']]高清pp_board(板)
    把Array.new(板[0] .size * 2 + 1,' - ')加入('')。
    board.each做|一行|
        看跌期权| + row.join(|)+|
        把Array.new(row.size * 2 + 1,' - ')加入('')。
    结束
结束pp_board(minesarray)minesarray = minesarray.map {|一行|
  row.map {| V |
    当v =='*'
      '一个'
    ELSIF v =='。
      '0'
    结束
  }
}pp_board(minesarray)

I'm trying to replace an array with a new array, replacing values as I go along.

Here's the code:

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
    }
}

I receive the following error:

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)'

解决方案

The row and col is not the index of the array, but the element itself.

You could do like below:

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)

这篇关于红宝石,在一个字符串数组和字符串/整数替换值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆