测验:表达式与内置函数
한국어 원문으로 표시합니다.
merge({ a = 1, b = 2 }, { b = 9, c = 3 }) 의 결과는?
- 키가 겹치면 오류가 나므로 평가되지 않는다
- { a = 1, b = 2, c = 3 } — 먼저 온 맵의 값이 남는다
- { a = 1, b = 2 } — 겹치는 키가 있는 맵은 통째로 무시된다
- { a = 1, b = 9, c = 3 } — 나중에 온 맵의 값이 이긴다
lookup(var.ports, "api", 0) 에서 세 번째 인자를 빠뜨리면 어떤 위험이 생기는가?
- 키가 없는 입력이 들어온 날 그 설정만 평가 중에 오류로 멈춘다
- 키가 없으면 빈 문자열이 들어가 설정 파일이 조용히 비어 버린다
- 맵 전체가 반환되어 하류에서 타입이 맞지 않게 된다
- 값을 찾더라도 타입이 any 로 바뀌어 검사를 통과하지 못한다
try 와 can 이 잡지 못하는 것은?
- 깨진 JSON 문자열을 디코드하려다 나는 오류
- 맵에 없는 키를 꺼내려다 나는 오류
- 선언되지 않은 locals 나 변수를 참조하는 오류
- 숫자로 바꿀 수 없는 문자열을 변환하려다 나는 오류
jsonencode 와 yamlencode 로 같은 맵을 각각 내보낸 뒤 되읽으면?
- YAML 쪽은 숫자가 모두 문자열이 되어 달라진다
- JSON 쪽만 키 순서가 보존되어 비교가 성립하지 않는다
- YAML 쪽은 참거짓이 문자열로 바뀌어 타입이 달라진다
- 표기만 다를 뿐 같은 데이터라 되읽은 결과가 일치한다
템플릿 안의 반복 지시문 끝에 공백 제거 표시를 붙이는 이유는?
- 반복 변수의 타입을 문자열로 고정해 서식 오류를 막기 위해서다
- 지시문이 차지한 줄이 결과물에 빈 줄로 남지 않게 하기 위해서다
- 반복 횟수가 많을 때 렌더링 속도를 눈에 띄게 줄이기 위해서다
- 중첩된 조건 지시문에서 짝이 맞는 끝을 도구가 찾게 하기 위해서다
설정에서 서비스 목록을 받아 이름=포트 줄을 만들 때, 머리글에 개수를 # 3 services 처럼 직접 적어 두면 무엇이 문제인가?
- 입력 목록이 바뀌어도 머리글만 옛 숫자로 남아 결과가 어긋난다
- 숫자를 문자열 안에 적으면 타입 변환이 일어나 서식이 깨진다
- 머리글이 있으면 직렬화 함수가 그 줄을 데이터로 오해한다
- 주석으로 시작하는 줄은 템플릿 지시문으로 해석되어 사라진다