Проблемы с доступом к массиву векторов

Мой код выглядит так:

a = IO.readlines("input.txt").map { |line| Vector.[](line.split) }

Теперь я хочу получить доступ к одному компоненту первого вектора в моем массиве a. Я пишу следующее для обращения к вектору:

puts a[0]

Поведение в значительной степени ожидаемо - я получаю следующее:

Vector[1.2357, 2.1742, -5.4834, -2.0735]

Теперь давайте попробуем обратиться к одному компоненту следующим образом:

puts a[0][0]

и вуаля, я получаю список всех векторных компонентов, например:

1.2357
2.1742
-5.4834
-2.0735

Как так? Может быть, последняя попытка была ошибочной? Как правильно адресовать скаляр внутри вектора в массиве?


person gmile    schedule 26.09.2009    source источник
comment
Обратите внимание, что переменная a — это массив, содержащий вектор. Это нормально? попробуй поставь a.inspect   -  person khelll    schedule 26.09.2009
comment
Вы меня подтолкнули заметить, что в конструкторе вектора я ставлю не обязательную ссылку на массив (со знаком *), а сам массив. Это была ошибка. Опубликуйте простой ответ здесь, чтобы я мог принять его :)   -  person gmile    schedule 26.09.2009


Ответы (1)


Из-за вашего кода я думаю, что конструкция массива должна быть:

a = IO.readlines("input.txt").map { |line| Vector[*line.split] }
person khelll    schedule 26.09.2009