Есть ли название для языковой функции, которая позволяет присваивать / создавать?

Это немного сложно для меня, но в PHP вы можете сказать что-то вроде:

$myArray['someindex'] = "my string";

и если нет индекса с таким именем, он создаст / присвоит значение, а если есть индекс, он перезапишет существующее значение.

Сравните это с Javascript, где сегодня мне приходилось делать такие проверки:

if (!myObject[key]) myObject[key] = "value";

Я знаю, что это может показаться немного придирчивым, но есть ли название способности PHP (и многих других языков) выполнять эти проверки самостоятельно, в отличие от более многословного (читай: PITA) метода Javascript?

РЕДАКТИРОВАТЬ

Я запутался, спросив это. Допустим, вы хотите добавить в эту структуру:

myobject = {
    holidays : {easter : {date : 4/20/2010,
                          religion : Christianity}
                holi : {date : 3/10/2010,
                        religion : hindu} 
}

У меня была проблема сегодня, когда я получал табличные данные, и я хотел поместить их в дерево вроде этого, создав объект.

Когда я начал свои петли, у меня были проблемы с созданием новых индексов, таких как myobject['holidays'][thisVariable][date] = 4/20/2010 если бы дерево в основном не было построено до этого момента.

Я возьму пример кода с моего другого компьютера, если это не ясно, извините за плохое мышление.

3 ответа

Решение

Я бы предположил, что "авто-вивификация" http://en.wikipedia.org/wiki/Autovivification от Perl может иметь значение, но она работает не так, как вы описали. На вики-странице есть хорошее резюме. Другие языки, такие как Ruby, поддерживают хук "действие по умолчанию" для хеш-ключей, которые не были назначены, что также может использоваться для автовеласовки.

Например, в Ruby:


>> h = Hash.new {|h,k| h[k] = {}}
=> {}
>> h["hello"]["world"] = 20
=> 20
>> h["hello"]["world"]
=> 20

Вы ошибаетесь. Чтобы назначить значение ключу объекта в javascript, вам не нужно выполнять эту проверку. Значение будет назначено вне зависимости от того, существует ли значение для этого ключа или нет.

Думаю об этом. Как вы могли бы получить значения в объекте или хэше, если вам сначала нужно было получить значение там?

Здесь Javascript делает то же самое, что и PHP: myObject[key] = "value" перезапишет существующее значение, если оно существует. Можете ли вы сказать нам, почему вы думаете иначе?

Другие вопросы по тегам