через CSS и позиционирование? мысль в принципе интересная и пока кроме как отрендерить каким-нибудь движком и вернуться к картинке — альтернатив я для бота не вижу
collect или map (алиас) НЕ изменяет массив, а возвращает измененную копию.
А вот collect! и map! да.
mholub|mholub irb 21:25
irb(main):001:0> a = [1, 2, 3]
=> [1, 2, 3]
irb(main):002:0> a.map { |x| 2 * x }
=> [2, 4, 6]
irb(main):003:0> a
=> [1, 2, 3]
irb(main):004:0> a.map! {|x| 2 * x }
=> [2, 4, 6]
irb(main):005:0> a
=> [2, 4, 6]
Вообще в ruby это такая идиома: predicate? и dangerous_method!
Ну и забыли про мой любимый итератор — inject.
inject это свертка (fold) или accumulate, известная любителям ФП.
Действует так, если inject-у указывается аргумент, то этот аргумент является начальным значением, inject проходит по массиву и для каждого элемента вызывает блок, передавая ему как параметры накопленное значение (на первой итерации как раз начальное) и сам элемент. Значение, которое вернет блок присваивается накопленному значению и идет переход к следующей итерации.
С примерами понятнее:
[1, 2, 3].inject(0) { |sum, x| sum + x } #сумма всех элементов массива
Если аргумент не передается, то начальным значением становится первый элемент, а итерация начинается со второго:
(1..10).inject { |fac, n| fac * n } #факториал от положительного n
[1, -3, 4, 5, -16, 23].inject { |min, el| min > el ? el : min } #минимальный элемент в массиве
в макоси кстати кнопка «Закрыть» подразумевает именно закрытие окна, но не приложения — разница в том, что свернутое окно видно в списке свернутых окон, а закрытое окно именно закрыто, но если щелкнуть по, например, иконке айтюнса в доке, просто открывается новое окно
Может просто я тормоз, но мне слабо представляется, как я вот так сходу за час это сделаю.
А вот collect! и map! да.
mholub|mholub irb 21:25 irb(main):001:0> a = [1, 2, 3] => [1, 2, 3] irb(main):002:0> a.map { |x| 2 * x } => [2, 4, 6] irb(main):003:0> a => [1, 2, 3] irb(main):004:0> a.map! {|x| 2 * x } => [2, 4, 6] irb(main):005:0> a => [2, 4, 6]Вообще в ruby это такая идиома: predicate? и dangerous_method!
Ну и забыли про мой любимый итератор — inject.
inject это свертка (fold) или accumulate, известная любителям ФП.
Действует так, если inject-у указывается аргумент, то этот аргумент является начальным значением, inject проходит по массиву и для каждого элемента вызывает блок, передавая ему как параметры накопленное значение (на первой итерации как раз начальное) и сам элемент. Значение, которое вернет блок присваивается накопленному значению и идет переход к следующей итерации.
С примерами понятнее:
[1, 2, 3].inject(0) { |sum, x| sum + x } #сумма всех элементов массиваЕсли аргумент не передается, то начальным значением становится первый элемент, а итерация начинается со второго:
(1..10).inject { |fac, n| fac * n } #факториал от положительного n [1, -3, 4, 5, -16, 23].inject { |min, el| min > el ? el : min } #минимальный элемент в массивеВот жутчайший пример:
ru.wikibooks.org/wiki/Введение_в_язык_Scheme_для_школьников
руби себя и с mongrel прекрасно чувствует и совершенно ничего настраивать не нужно
puts возвращает соответственно nil
А вот в форме:
variable = if condition some_value else other_value endвстретить вполне можно.
это проблемы слабой типизации в конкретных языках (php, javascript), а не динамической.
Если честно, видеть эталонный рекурсивный процесс вычисления чисел фибоначчи не очень интересно.