빌드 표현식
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
WFF는 표현식 언어를 사용하여 다음을 사용 설정합니다.
Transform
또는 Gyro
를 사용하여 모양 변환
Condition
문을 통한 조건부 동작
Template
요소의 문자열 서식 지정
표현식 언어는 일반적인 연산자와 사용할 수 있는 다양한 함수를 포함하는 스크립트 언어입니다.
표현식은 대괄호로 표시되는 데이터 소스를 사용하여 현재 날짜 및 시간, 건강 및 피트니스 측정항목, 날씨와 같은 외부 입력에 반응할 수 있습니다.
표현식을 사용할 때 Transform
또는 Template
와 Condition
사용 간의 주요 차이점은 Transform
및 Template
는 표현식의 결과가 값 (예: 래핑 요소의 새 위치)이어야 하는 반면 Condition
는 표현식의 결과가 불리언이어야 한다는 점입니다.
예를 들어 Condition
는 다음을 사용할 수 있습니다.
[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7
이는 불리언으로 평가되며 DAY_OF_WEEK
데이터 소스를 사용하여 주말인지 여부를 결정합니다.
함수도 지원됩니다. 예를 들어 Wear OS 기기 가속도계의 x-value
를 기반으로 값을 왼쪽 또는 오른쪽으로 최대 5도 회전하는 표현식은 다음과 같습니다.
(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]
데이터 소스를 사용하는 표현식은 1초마다 다시 평가됩니다.
재평가하면 표현식 결과의 변경사항에 따라 장면이 다시 계산되고 렌더링될 수 있습니다. 따라서 최대한 자주 재평가하지 않는 데이터 소스를 항상 사용하는 것이 중요합니다. 예를 들어 오후인지 확인하려면 다음을 실행합니다.
// Bad - re-evaluates every second
[SECONDS_IN_DAY] > 43200
// Good - limits re-evaluation frequency (1 = PM, 0 = AM)
[AMPM_STATE] == 1
표현식의 구성 값
함수 및 데이터 소스 외에도 구성 값을 사용할 수 있습니다. 예를 들어 UserConfigurations에서 showBackgroundInAfternoon
라는 BooleanConfiguration
가 정의된 경우 다음과 같이 표현식에 사용할 수 있습니다.
[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 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"]]