Есть ли имя для языковой функции, позволяющей назначать/создавать?
-
23-09-2019 - |
Вопрос
Мне немного сложно это сформулировать, но в 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» перезапишет существующее значение, если оно существует.Можете ли вы рассказать нам, почему вы думаете иначе?