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

StackOverflow https://stackoverflow.com/questions/2542551

Вопрос

Мне немного сложно это сформулировать, но в 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 если бы дерево не было в основном построено к этому моменту.

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

Это было полезно?

Решение

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

Например, в Руби:


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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top