Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用';紧凑型';-可能的问题_Ruby - Fatal编程技术网

Ruby 使用';紧凑型';-可能的问题

Ruby 使用';紧凑型';-可能的问题,ruby,Ruby,我的代码将文本作为输入,将其拆分为单个字符,然后返回一个数组,其中单词被分组,非单词字符是单独的项。 第一种变体: def make_array(text) @raw_array=text.split(//) @result_array=[] k=0 for i in 0...@raw_array.length if @raw_array[i]=~/[\W]/ @result_array[k+1]=@raw_array[i] k+=2 else @result_array[k]='' i

我的代码将文本作为输入,将其拆分为单个字符,然后返回一个数组,其中单词被分组,非单词字符是单独的项。 第一种变体:

def make_array(text)
  @raw_array=text.split(//)
  @result_array=[]
k=0
for i in 0...@raw_array.length
if @raw_array[i]=~/[\W]/
@result_array[k+1]=@raw_array[i]
k+=2
else
@result_array[k]='' if @result_array[k]==nil
@result_array[k]=@result_array[k]+@raw_array[i]
end
end
  print @result_array.inspect
end
当输入逐个包含非字符时,也会导致数组中出现零项

make_array("TEST TEST TEST TEST")#=>["TEST", " ", "TEST", " ", "TEST", " ", "TEST"]
make_array("TEST,,, TEST TEST TEST")#=>["TEST", ",", nil, ",", nil, ",", nil, ...]
我可以用紧凑的方法,然后

make_array("TEST,,, TEST TEST TEST")#=>["TEST", ",", ",", ",", " ", "TEST", " ", "TEST", " ", "TEST"]
很好。或者我需要重构我的迭代器代码并花费一些时间,以便在没有压缩的情况下得到“清晰”的结果。 事实上,我不想在这上面花时间。但是我使用compact的方法会导致一些错误或意外的输出吗?我已经测试了一段时间,没有注意到什么。
但是你有什么建议?这个紧凑的技巧是肮脏的还是不好的?

紧凑的所做的就是从数组中删除零。如果确定数组中不需要nils,那么就不会有任何问题