빌드 표현식

WFF는 표현식 언어를 사용하여 다음을 사용 설정합니다.

  • Transform 또는 Gyro를 사용하여 모양 변환
  • Condition 문을 통한 조건부 동작
  • Template 요소의 문자열 서식 지정

표현식 언어는 일반적인 연산자와 사용할 수 있는 다양한 함수를 포함하는 스크립트 언어입니다.

표현식은 대괄호로 표시되는 데이터 소스를 사용하여 현재 날짜 및 시간, 건강 및 피트니스 측정항목, 날씨와 같은 외부 입력에 반응할 수 있습니다.

표현식을 사용할 때 Transform 또는 TemplateCondition 사용 간의 주요 차이점은 TransformTemplate는 표현식의 결과가 (예: 래핑 요소의 새 위치)이어야 하는 반면 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