can 함수

can 함수

can 은 주어진 표현식을 평가해서 그 표현식이 오류 없이 결과를 생성했는지 나타내는 불리언 값을 반환해요.

출처: 문서

본문

can 은 주어진 표현식을 평가해서 그 표현식이 오류 없이 결과를 생성했는지 나타내는 불리언 값을 반환해요. 이 함수는 인자를 평가할 때 발생하는 오류를 잡아낼 수 있는 특별한 함수예요. can 을 쓸 수 있는 대부분의 상황에서는 try 를 쓰는 게 더 나아요. 실패하는 표현식에 대한 대체값을 더 간결하게 정의할 수 있거든요.

can 함수는 런타임까지 알 수 없는 데이터에 접근할 때 생기는 동적인(dynamic) 오류만 잡아서 처리할 수 있어요. 잘못된 형식의 참조처럼 어떤 입력에 대해서든 유효하지 않음이 증명될 수 있는 표현식과 관련된 오류는 잡지 못해요.

주의: can 함수는 변수 검증 규칙(variable validation rules)에서 간단한 테스트를 위해서만 쓰도록 의도됐어요. 기술적으로는 어떤 종류의 표현식이든 받고 구성의 다른 곳에서도 쓸 수 있지만, 다른 맥락에서 쓰는 것은 권장하지 않아요. 구성의 다른 곳에서 오류를 처리할 때는 try 를 쓰는 것을 선호해요.

Examples

> local.foo
{
  "bar" = "baz"
}
> can(local.foo.bar)
true
> can(local.foo.boop)
false

can 함수는 동적 표현식 평가 이전에도 유효하지 않음이 증명될 수 있는 구조, 예를 들어 잘못된 형식의 참조나 선언되지 않은 최상위 객체에 대한 참조와 관련된 오류는 잡지 못해요:

> can(local.nonexist)

Error: Reference to undeclared local value

A local value with the name "nonexist" has not been declared.

더 알아보기 (Learn more)

  • try 는 일련의 표현식을 평가해 보면서 첫 번째로 성공하는 표현식의 결과를 반환해요.