帮助Ruby中的多维数组

unk*_*own 2 ruby

我有这个代码将字符串拆分为3个字节的组:

str="hello"
ix=0, iy=0
bytes=[]
tby=[]
str.each_byte do |c|
    if iy==3 
        iy=0
        bytes[ix]=[]
        tby.each_index do |i|
            bytes[ix][i]=tby[i]
        end
        ix+=1
    end
    tby[iy]=c
    iy+=1
end
puts bytes
Run Code Online (Sandbox Code Playgroud)

我基于这个例子:http://www.ruby-forum.com/topic/75570

但是我从它那里得到了类型错误.谢谢.

sep*_*p2k 6

ix = 0, iy = 0转换为ix = [0, (iy = 0)],这就是你得到类型错误的原因.

但是,执行您想要做的事情的方法较少"程序化":

对于ruby 1.8.7+:

"hello world".each_byte.each_slice(3).to_a
#=> [[104, 101, 108], [108, 111, 32], [119, 111, 114], [108, 100]]
Run Code Online (Sandbox Code Playgroud)

对于红宝石1.8.6:

require 'enumerator'
"hello world".enum_for(:each_byte).enum_for(:each_slice, 3).to_a
Run Code Online (Sandbox Code Playgroud)