Работа с выражениями
Выражения широко используются в SberMobile, поэтому важно разбираться в обработке выражений с точки зрения программирования.
Выражение представлено классом Expression
, который может быть создан из строки. Однако экземпляры Expression
инкапсулируют анализируемое синтаксическое дерево. Поэтому если единственный экземпляр Expression
вычисляется несколько раз (например, с разной средой), то разбор этого исходного текста предоставляется только раз.
Вычисление выражения, например, вычисление результатов, выполняется методами evaluate()
класса Evaluator
. Эти методы возвращают необработанные экземпляры Object
, которые представляют собой результирующие значения. Однако есть методы, включающие преобразование результирующего значения в определенный тип: evaluateToBoolean()
, evaluateToColor()
, evaluateToData()
, evaluateToDataTable()
, evaluateToDate()
, evaluateToNumber()
, evaluateToString()
и другие.
У объекта Evaluator
есть карта распознавателей ссылок (представленных интерфейсом ReferenceResolver
). Большинство распознавателей пользователей являются стандартными распознавателями (доступными посредством метода getDefaultResolver()
) и распознавателями среды (доступными посредством метода getEnvironmentResolver()
).
Большинство выражений запрашивает указание определенных настроек распознавателя по умолчанию, поэтому у класса Evaluator
есть большое количество особых методов конструкторов и конфигураций, которые передают функциональность стандартному распознавателю и позволяют указывать:
ContextManager
, который используется для нахождения контекстовContext
по умолчаниюDataTable
по умолчаниюCallerController
,