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