Как я заменяю элемент массива?

Если Вы интересуетесь наблюдением, как шаблон Делегата используется в реальном коде, посмотрите не далее, чем Какао на Mac OS X. Какао является предпочтительным инструментарием UI Apple для программирования в соответствии с Mac OS X и кодируется в Objective C. Это разработано так, чтобы каждый компонент UI был предназначен, чтобы быть расширенным через делегацию вместо разделения на подклассы или других средств.

Для получения дополнительной информации, я рекомендую проверить то, что Apple должна заявить о делегатах здесь .

26
задан Andrew Grimm 1 October 2011 в 12:44
поделиться

5 ответов

Не уверен, что вы пытается заменить конкретное значение или нет, но это работает:

a = [1, 2, 3, 4, 5]
b = [11, 22, 33, 44]
a.map! { |x| x == 5 ? b : x }.flatten!

Это итерация по значениям a , и когда он находит значение 5 , он заменяет это значение на array b , затем объединяет массивы в один массив.

43
ответ дан 28 November 2019 в 06:09
поделиться

Возможно, вы имеете в виду:

a[4] = [11,22,33,44] # or a[-1] = ...
a.flatten!

Функциональное решение может будь лучше, как насчет того, чтобы просто:

a[0..-2] + [11, 22, 33, 44]

что дает ...

=> [1, 2, 3, 4, 11, 22, 33, 44]
18
ответ дан 28 November 2019 в 06:09
поделиться

Этот вариант найдет 5 независимо от того, где он находится в массиве.

a = [1, 2, 3, 4, 5]
a[a.index(5)]=[11, 22, 33, 44] if a.index(5)
a.flatten!
5
ответ дан 28 November 2019 в 06:09
поделиться

Вам действительно не нужно сглаживать, если вы просто объединяете. Так что отсеките последний элемент от первого массива и объедините их:

a = [ 1, 2, 3, 4, 5 ]           #=> [1, 2, 3, 4, 5]
t = [11, 22, 33, 44]            #=> [11, 22, 33, 44]
result = a[0..-2] + t           #=> [1, 2, 3, 4, 11, 22, 33, 44]

a [0 ..- 2] - операция среза, которая берет все, кроме последнего элемента массива.

Надеюсь, это поможет!

5
ответ дан 28 November 2019 в 06:09
поделиться

gweg, не уверен, что вы здесь пытаетесь сделать, но ищете ли вы что-то вроде этого?

a = [1, 2, 3, 4, 5]
a.delete_at(4)
a = a.concat([11,22,33,44])

Есть несколько способов сделать это - я не думаю, что приведенный выше код выглядит особенно красиво. Все зависит от значения "5" в исходном массиве.

0
ответ дан 28 November 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: