ساختن عبارت

«فیلترهای قالب‌بندی Windows» از زبان عبارتی برای فعال کردن موارد زیر استفاده می‌کند:

  • درحال تبدیل ظاهر بااستفاده از Transform یا Gyro
  • رفتار شرطی ازطریق Condition بیانیه
  • قالب‌بندی رشته در Template عنصر

زبان عبارت یک زبان برنامه‌نویسی است که شامل عملگرهای معمول شما و طیف وسیعی از توابع قابل استفاده است.

عبارت‌ها می‌توانند از منابع داده—که بااستفاده از قلاب نشان داده می‌شوند—برای واکنش نشان دادن به ورودی‌های خارجی مثل تاریخ و زمان فعلی، سنجه‌های سلامتی و تناسب اندام، یا حتی آب‌وهوا استفاده کنند.

وقتی از عبارت‌ها استفاده می‌کنید، تفاوت اصلی بین استفاده از Transform، Template، و Condition این است که Transform و Template عبارت را ملزم می‌کنند که به مقدار (برای مثال، موقعیت جدید عنصر دربرگیرنده) منتهی شود، درحالی‌که Condition عبارت را ملزم می‌کند که به مقدار بولی منتهی شود.

وقتی در عنصر Condition استفاده می‌شود، عبارت را به‌عنوان عنصر نوشتاری مشخص کنید. عبارت را در عنصر CDATA بپیچید تا نیازی به استفاده از مرجع‌های نهاد، مانند " و &، نباشد.

<![CDATA[[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7]]>

این مقدار به مقدار بولی ارزیابی می‌شود و بااستفاده از منبع داده DAY_OF_WEEK تعیین می‌کند که آخر هفته است یا نه.

توابع نیز پشتیبانی می‌شوند—برای مثال، عبارتی برای چرخاندن مقدار تا ۵ درجه در هر جهت—براساس x-value شتاب‌سنج دستگاه Wear OS:

(5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5.0/90.0)*clamp([ACCELEROMETER_ANGLE_X],-90,0)

تابع clamp() مقدار را در دو محدوده محدود می‌کند.

ارزیابی مجدد عبارت

تعداد دفعاتی که عبارت‌ها دوباره ارزیابی می‌شوند به منابع داده‌ای که در آن‌ها استفاده شده است بستگی دارد. برای مثال، عبارت [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7 فقط وقتی روز جدیدی شروع می‌شود دوباره ارزیابی می‌شود. بااین‌حال، عبارتی که از منبع داده [SECOND] استفاده می‌کند هر ثانیه دوباره ارزیابی می‌شود.

ارزیابی مجدد ممکن است براساس تغییر در نتیجه عبارت، منجر به محاسبه مجدد صحنه و بازآوری شود. بنابراین مهم است که همیشه از منابع داده‌ای استفاده کنید که تا حد امکان به‌ندرت دوباره ارزیابی می‌شوند. برای مثال، برای تعیین اینکه بعدازظهر است یا نه:

<!-- BAD: Re-evaluates every second -->
[SECONDS_IN_DAY] > 43200

<!-- Good: Minimizes re-evaluation (1 = PM, 0 = AM) -->
[AMPM_STATE] == 1

مقادیر پیکربندی در عبارت‌ها

علاوه‌بر توابع و منابع داده، می‌توان از مقادیر پیکربندی نیز استفاده کرد. برای مثال، اگر در UserConfigurations یک BooleanConfiguration به‌نام showBackgroundInAfternoon تعریف شده باشد، می‌توان از آن در عبارت زیر استفاده کرد:

<![CDATA[[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1]]>