为什么我得到No Method Error?

时间:2016-06-16 16:10:01

标签: ruby

我是ruby的新手,但仍然无法解析错误消息。我的方法采用这种形式的字符串: " 8,2,1,6; 3,1,3,2; 6,4,2,7; 7,3,2,4和#34;

我的目标是将每个集合(offset by;)拆分为数组的子数组,并将子数组中的每个值转换为整数。然后,我需要在每个子阵列中打印第二个值。我被困在最后一部分了。这是代码:

@input = "8, 2, 1, 6; 3, 1, 3, 2; 6, 4, 2, 7; 7, 3, 2, 4"
@array = []

def splitter
  @input.gsub!(/\s+/, '')
  @array = @input.split(';').map { |group| group.split(',') }
  @array.map! { |subarray| subarray.map! {|v| v.to_i} }
  @array.each { |e| print e(1) }
  puts ''
end

splitter

以下是错误消息:

`block in splitter': undefined method `e' for main:Object (NoMethodError)

我想知道我是否没有使用正确的表格来构建数组。

1 个答案:

答案 0 :(得分:0)

str = "8, 2, 1, 6; 3, 1, 3, 2; 6, 4, 2, 7; 7, 3, 2, 4"

str.split(';').map { |e| e.split(',').map(&:to_i) }
#⇒ [[8, 2, 1, 6], [3, 1, 3, 2], [6, 4, 2, 7], [7, 3, 2, 4]]