帮助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 

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

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

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

对于ruby1.8.6:

 require 'enumerator' "hello world".enum_for(:each_byte).enum_for(:each_slice, 3).to_a 

你的问题就在于此

 ix=0, iy=0 

它将ix的值设置为两次0的数组,并且iy为0.您应该将其替换为

 ix, iy = 0, 0