สร้างนิพจน์
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
WFF ใช้ภาษานิพจน์เพื่อเปิดใช้สิ่งต่อไปนี้
- การเปลี่ยนรูปลักษณ์โดยใช้
Transform
หรือ Gyro
- ลักษณะการทํางานแบบมีเงื่อนไขผ่านคำสั่ง
Condition
- การจัดรูปแบบสตริงในองค์ประกอบ
Template
ภาษานิพจน์เป็นภาษาสคริปต์ที่มีโอเปอเรเตอร์ทั่วไปและฟังก์ชันต่างๆ ที่ใช้ได้
นิพจน์สามารถใช้แหล่งข้อมูลซึ่งแสดงด้วยวงเล็บเหลี่ยมเพื่อให้คุณตอบสนองต่ออินพุตภายนอก เช่น วันที่และเวลาปัจจุบัน เมตริกด้านสุขภาพและการออกกำลังกาย หรือแม้แต่สภาพอากาศ
เมื่อใช้นิพจน์ ความแตกต่างหลักระหว่างการใช้ Transform
หรือ Template
กับ Condition
คือ Transform
และ Template
กำหนดให้นิพจน์แสดงผลเป็นค่า (เช่น ตำแหน่งใหม่ขององค์ประกอบที่ล้อมรอบ) ส่วน Condition
กำหนดให้นิพจน์แสดงผลเป็น บูลีน
เช่น 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()
จะจำกัดค่าให้อยู่ภายในขอบเขต 2 ขอบเขต
การประเมินนิพจน์อีกครั้ง
ความถี่ในการประเมินนิพจน์อีกครั้งจะขึ้นอยู่กับแหล่งข้อมูลที่ใช้ในนิพจน์ เช่น นิพจน์ [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
ค่าการกําหนดค่าในนิพจน์
นอกเหนือจากฟังก์ชันและแหล่งข้อมูลแล้ว คุณยังใช้ค่าการกําหนดค่าได้ด้วย ตัวอย่างเช่น หากมีการกําหนด BooleanConfiguration
ชื่อ showBackgroundInAfternoon
ใน UserConfigurations คุณจะใช้ในนิพจน์ได้ดังนี้
[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","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-27 UTC"],[],[],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"]]