November 23rd, 2014

(no subject)

А нет ли, совершенно случайно, среди читателей сего людей, понимающих Ruby?

Вот удивительное поведение какое. Допустим, хочу я создать в нем хэш (ака ассоциативный массив, ака словарь) с дефолтным значением для любого ключа.

Вот как это работает для чисел:

    h1 = Hash.new(0)        # дефолтное значение — 0
    h1['a'] += 1           # прибавил единичку к дефолтному нулю
    h1                      # проверяю    
      => {"a"=>1} 




Вот для строк:
    h2 = Hash.new('cat')
    h2['a'] += '_and_dog'
    h2['a']                       
      => "cat_and_dog"
    h2['b']
      => "cat"                   # дефолтное значение сохранилось прежним
    h2
      => {"a"=>"cat_and_dog"} 





А вот, допустим, хочу я проделать то же самое с массивом и задаю в качестве значения по умолчанию пустой массив:

    h3 = Hash.new([])
    h3['a'] << 'an entry'
    h3['a']                       
      => ["an entry"]
    h3['b']
      => ["an entry"]     # ОПАНЬКИ!!! Почему не дефолтное значение?
    h3
      => {}               # ФИГАСЕ!!! 




Кто-то три года назад спрашивал про это на StackOverflow; ему вроде подсказали решение задачи, но как-то неубедительно объяснили, почему так происходит. Почему дефолтный массив ведет себя иначе чем дефолтное число или дефолтная строка.

(no subject)

Из книжки «Ребенок третьего года жизни: пособие для родителей и педагогов» («Современный образовательный стандарт», 2011).

Пособие, пишут, адресовано родителям и гувернерам, педагогам дошкольных учреждений, студентам педагогических колледжей и вузов.

Пишут там так:



Маленький, блин, художник. Малыш. Кроха.
Откуда, едрить, это берется в текстах для педагогов дошкольных учреждений и студентов педагогических колледжей и вузов?!

2018

Одна новость. Два источника. Две интонации.

Мейл.ру



Как бы походя, и «еще не решил». Полная неопределенность :-)

Эхо



Аж заголовком и «не исключает». Гораздо определеннее.