Как правильно объединить "точечную нотацию" и "фигурную скобку" в кокоаскрипте (набросок)?

В документации к эскизу указано, что обозначения точек и фигурных скобок можно смешивать друг с другом. Это даже пример, доступный:

[[context.document currentPage] deselectAllLayers];

К сожалению, этот код не работает в эскизе и выдает ошибку, если выполняется командой "выполнить собственный скрипт":

SyntaxError: Unexpected identifier 'currentPage'. Expected either a closing ']' or a ',' following an array element..
Plugin “untitled script”, line 2.
»   [context.document currentPage]; «Error in command untitled script Script at path (null) does not contain a handler function named: onRun
Script executed in 0.023666s

Этого можно избежать, добавив дополнительные ( а также ):

[[(context.document) currentPage] deselectAllLayers];

Почему это происходит? Имеется ли какая-либо документация о том, как можно смешивать фигурные скобки и точечные обозначения? Это какая-то ошибка или ожидаемое поведение?

1 ответ

Решение

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

Например, на странице документации о выделениях вы можете использовать следующий код, чтобы отменить выбор всего:

var doc = context.document
[[doc currentPage] deselectAllLayers]

Перейдите по этой ссылке и посмотрите в разделе Очистка заголовка выбора: http://bohemiancoding.com/sketch/support/developer/02-common-tasks/01.html

Даже их примерные плагины не смешивают обе нотации, как вы можете видеть здесь: https://github.com/BohemianCoding/ExampleSketchPlugins/blob/master/Hello%20World/Hello%20World.sketchplugin/Contents/Sketch/script.cocoascript,

В этом примере context.document также присваивается новой переменной перед использованием в фигурных скобках.

Другие вопросы по тегам