Comments 13
Ну ок, а в чём смысл то?
Условное присвоение? Это обычное присвоение + тренарный оператор.
Начнем с приведения строки к целому. В Питоне все просто и прямолинейно:
number = int(text)
Но в JS вы должны объяснить к какой системе вы собираетесь приводить...
Настолько просто и прямолинейно, что второй аргумент основания системы счисления является именованным и имеет значение по умолчанию:
number = int(text, base=10)
key = 'color';
value = dictionary[key] || 'GREEN';
Если по ключу вернется значение 0 или "" (пустая строка), то оно интерпретируется как false и тогда вернется 'GREEN'. Но сдается мне, что в некоторых ситуациях мы будем ожидать именно 0 или пустую строку.
Как мне кажется, лучшим подходом было бы проверить именно на undefined
key = 'color';
value = dictionary[key] !== undefined ? dictionary[key] : 'GREEN';
> В JS вы можете проделать такой же трюк как со свойством объекта – OR со значением по дефолту
В питоне такое тоже работает:
>>> a = None
>>> b = a or 'GREEN'
>>> b
'GREEN'
В питоне такое тоже работает:
>>> a = None
>>> b = a or 'GREEN'
>>> b
'GREEN'
Тут имелось в виду что в Питоне есть стандартный метод получения значения из словаря по отсутствующему_ключу —
Вообще же в любом языке (ну за исключением может быть какой-то экзотики) сравнение
get(key, default_value)
— а в JS для такого надо городить небольшой костыль в виде OR, который стал де-факто стандартной практикой.Вообще же в любом языке (ну за исключением может быть какой-то экзотики) сравнение
нуля/Null/None/False OR что_то_отличное_от_нуля
— всегда дает это_что_то
Не согласен про экзотику. В любом сильно-типизированном языке (c, cpp, java) логический OR может вернуть только bool.
Но в C и C++ типизация слабая (неявная), т.к. там есть неявные преобразования типов. В Питоне же она как раз сильная.
Вы правы насчет слабой в С\С++, но утверждают, что она там явная (кроме auto с C++11). Вообще там черт ногу сломит в определениях… Я хотел сказать, что в этих трех языках точно не получится провернуть трюк с OR, и уж точно их нельзя назвать экзотикой.
items = items1.concat(items2);
если уже говорить о различных подходах в языках, то стоит, наверное, упомянуть и возможность сделать вот так:
items = [...items1, items2]
Sign up to leave a comment.
Аналоги в Python и JavaScript. Часть первая