
Вот способ:
{(.k1): .k2}
@Philippe Филипп, я не знаю, в руководстве не сказано, почему, просто мы делаем
Большинство современных «мануалов» просто надоедливы: никаких объяснений, много примеров.
oguz ismail и @EnzoR, это в руководстве: «Ключевые выражения, кроме константных литералов, идентификаторов или ссылок на переменные, должны быть заключены в скобки». Если вы имеете в виду, что аргументы, лежащие в основе этого решения по дизайну языка, отсутствуют в справочном руководстве, то этого никогда не было в справочных руководствах и по уважительным причинам. Но читайте дальше, если хотите узнать.
@Филипп, { a: 123 } означает { "a": 123 }. { (a): 123 } отличается, так как это оценивает выражение a. Теперь, в отличие от { a: 123 }, { .k: 123 } не является двусмысленным, поэтому они могли бы это допустить. Другими словами, один из подходов, который мог бы использовать язык, состоит в том, чтобы запрашивать скобки только в случае неоднозначности. Но вместо этого он пошел с подходом, согласно которому все выражения, кроме автоматически цитируемых голых слов, литералов в кавычках и переменных, должны использовать круглые скобки.
Есть плюсы и минусы для обоих. Один из плюсов подхода, который он использует, заключается в том, что он упрощает синтаксический анализатор (поскольку ему не нужно проверять, что следует за a в { a ..., чтобы знать, что a является пустым словом для автоматического цитирования). Это также гораздо менее удивительно (поскольку { x y: ... } не работает иначе, чем { x: ... }). Во-вторых, это дает ему возможность ослабить требования в будущих версиях без проблем с обратной совместимостью. Наконец, всегда использовать круглые скобки для выражений более последовательно.
Почему нам нужно () вокруг
.k1, а не.k2?