Присвоение клавиш ассоциативному массиву завершается ошибкой со знаком - без двойных кавычек

for k, v in {font-weight : "bold"}
    msgbox %k% : %v%    ; : bold

for k, v in {"font-weight" : "bold"}
    msgbox %k% : %v%    ; font-weight : bold

Это ошибка или строка, переданная как ключ, рассматривается как выражение, когда используется знак -? В руководстве сказано, что двойные кавычки необязательны.


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

font-value := "bold"
msgbox % font-value

Результат:

Текст строки: значение шрифта := "жирный" Ошибка: эта строка не содержит распознанного действия.


для дополнительных примечаний:

for k, v in {font*weight : "bold"}
    msgbox %k% : %v%    ; : bold

for k, v in {10*2 : "10*2"}
    msgbox %k% : %v%    ; 20 : 10*2 

for k, v in { 0xeeeee : "0xeeeee"}
    msgbox %k% : %v%    ; 978670: 

person NbdNnm    schedule 15.11.2012    source источник


Ответы (1)


Как и в ответе здесь, знак минус зарезервирован. Ярлык также не будет работать при использовании любых других операторов. Причина, по которой это не ошибка, заключается в том, что она позволяет использовать математику, манипуляции со строками, функции и т. д. при именовании ключей для объектов. Это может быть или не быть недостатком дизайна, но он работает так, как задумал разработчик.

Из документации AutoHotkey_L:

кавычки необязательны для ключей, состоящих только из словесных символов. В качестве ключа можно использовать любое выражение, но чтобы использовать в качестве ключа переменную, ее необходимо заключить в круглые скобки. Например, {(KeyVar): Value} и {GetKey(): Value} допустимы.

(выделение добавлено)

Словесный символ обычно означает буквы, цифры и символы подчеркивания.

person Brigand    schedule 16.11.2012