عبارات بسازید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
WFF از یک زبان عبارت برای فعال کردن استفاده می کند:
- تغییر شکل ظاهری با استفاده از
Transform
یا Gyro
- رفتار مشروط از طریق عبارات
Condition
- قالب بندی رشته در عناصر
Template
زبان عبارت یک زبان برنامه نویسی است که شامل عملگرهای معمولی شما و طیف وسیعی از توابع قابل استفاده است.
عبارات می توانند از منابع داده استفاده کنند - که با استفاده از براکت نشان داده می شوند - تا به شما اجازه دهند به ورودی های خارجی مانند تاریخ و زمان فعلی، معیارهای سلامت و تناسب اندام یا حتی آب و هوا واکنش نشان دهید.
هنگام استفاده از عبارات، تفاوت اصلی بین استفاده از Transform
یا Template
و Condition
این است که Transform
و Template
نیاز دارند که عبارت به یک مقدار منجر شود (به عنوان مثال، موقعیت جدید عنصر محصور) در حالی که Condition
نیاز دارد که عبارت به یک Boolean منجر شود.
برای مثال، یک Condition
ممکن است از این موارد استفاده کند:
[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7
با استفاده از منبع داده DAY_OF_WEEK
، این به یک بولی ارزیابی می شود و تعیین می کند که آیا آخر هفته است یا نه.
توابع نیز پشتیبانی می شوند - به عنوان مثال، عبارتی برای چرخش یک مقدار تا 5 درجه در هر جهت - بر اساس x-value
شتاب سنج دستگاه Wear OS:
(5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5/90)*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 - limits re-evaluation frequency (1 = PM, 0 = AM)
[AMPM_STATE] == 1
مقادیر پیکربندی در عبارات
علاوه بر توابع و منابع داده، می توان از مقادیر پیکربندی نیز استفاده کرد. برای مثال، اگر در UserConfigurations یک BooleanConfiguration
با نام showBackgroundInAfternoon
تعریف شده باشد، می توان از آن در یک عبارت استفاده کرد:
[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Build expressions\n\nWFF uses an expression language to enable:\n\n- Transforming the appearance using `Transform` or `Gyro`\n- Conditional behavior through `Condition` statements\n- String formatting in `Template` elements\n\nThe expression language is a scripting language which contains your\ntypical operators and a range of functions that can be used.\n\nExpressions can use [data sources](/training/wearables/wff/common/attributes/source-type)---represented using square brackets---to\nlet you react to external inputs such as the current date and time, health\nand fitness metrics, or even the weather.\n\nWhen using expressions, the primary difference between `Transform` or `Template` and\n`Condition` usage, is that `Transform` and `Template` require the expression to result\nin a *value* (for example, the new position of the enclosing element) whereas\n`Condition` requires the expression to result in a *boolean*.\n\nFor example, a `Condition` might use: \n\n [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7\n\nThis evaluates to a boolean and determines whether it is a weekend or not,\nusing the `DAY_OF_WEEK` data source.\n\n[Functions](/training/wearables/wff/common/attributes/arithmetic-expression#functions) are also supported---for example, an expression for rotating a\nvalue up to 5 degrees in either direction---based on the `x-value` of the Wear OS\ndevice's accelerometer: \n\n (5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) +\n (-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)\n\nThe `clamp()` function constrains a value within two bounds.\n\n### Expression re-evaluation\n\nThe frequency with which expressions are re-evaluated depends on the data\nsources used in them. For example, the \\[`DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] ==\n7` expression only re-evaluates when a new day starts. However, an expression\nthat uses the `[SECOND]` data source re-evaluates every second.\n\nRe-evaluation may result in scene recalculations and rerendering, based on the\nchange in the result of the expression. Therefore it is important to always use\ndata sources that re-evaluate as infrequently as possible. For example, to\ndetermine whether it is afternoon: \n\n // Bad - re-evaluates every second\n [SECONDS_IN_DAY] \u003e 43200\n\n // Good - limits re-evaluation frequency (1 = PM, 0 = AM)\n [AMPM_STATE] == 1\n\n### Configuration values in expressions\n\nIn addition to functions and data sources, configuration values can be used. For\nexample, if in the [UserConfigurations](/training/wearables/wff/user-configuration/user-configurations) a `BooleanConfiguration` named\n`showBackgroundInAfternoon` has been defined, this can be used in an expression: \n\n [CONFIGURATION.showBackgroundInAfternoon] == \"TRUE\" && [AMPM_STATE] == 1"]]