Вставка нового элемента в переменную экземпляра в Ruby on Rails - PullRequest
0 голосов
/ 17 декабря 2009

@ xs хранит URL-адреса, например www.yahoo.com, www.google.com

for x in @xs
     y = x... #do something with x
     @result += y  #i want to do something like that. i want to store them in @result. What do i have to write in here?
end

Извините за нубский вопрос. Кстати, как вы называете @result? Это переменная экземпляра или массив?

Ответы [ 4 ]

3 голосов
/ 17 декабря 2009

Сначала нужно инициализировать @result.

@result = []
for x in @xs
  y = x...
  @result << y
end
1 голос
/ 17 декабря 2009

Если вы хотите взять каждый элемент в массиве и изменить его, идиоматический способ Ruby - использовать map или collect:

@new_urls = @urls.map do |url|
  # change url to its new value here
end

Вам не нужно вручную присваивать его @new_urls, просто напишите оператор, который возвращает желаемое значение, например url.upcase или что вы хотите сделать.

1 голос
/ 17 декабря 2009

Из того, что я могу разобрать из вопроса, вы хотите изменить содержимое уже существующего массива

@mutated_xs = @xs.collect do |x|
  y = x.do_something # some code for to do something to x returning y
  x += y # mutate existing x here
end
puts @mutated_xs.inspect
1 голос
/ 17 декабря 2009

Вы должны либо сделать это:

@result << y

или это:

@result += [y]

Оператор + ожидает два массива, оператор << добавляет объект в массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...