{ } 블록의 두 가지 핵심 규칙{ } 블록은 식 연쇄 안에 작은 주머니를 만드는 것과 같습니다. 이 주머니는 두 가지 규칙을 가집니다.
{와}자체도 식이기 때문에, 앞뒤의 다른 표현과 띄어 써야 합니다.move(1, 0) {move(1,0)};은 틀린 식 연쇄이고,move(1, 0) { move(1,0) };처럼 써야 합니다.
{ }블록 안에서 식이 ❌ false를 보고하더라도, 식 연쇄 전체가 종료되지 않습니다.대신, 해당
{ }블록의 실행만 즉시 중단되고, 실행 순서는 닫는 괄호}바로 다음 식으로 점프합니다.
{ }블록은 시작할 때({)의 기준 위치 🌟를 체크포인트처럼 저장해 둡니다.블록 안에서 move 등으로 🌟기준 위치가 아무리 멀리 이동했더라도,
블록이 끝나면(
}), 🌟기준 위치는 저장해둔 체크포인트 위치로 즉시 복원됩니다.
이 두 규칙이 어떻게 "Y"자 행마를 만드는지 시각화해 봅시다.
move(0, 1) { move(1, 1) } move(-1, 1);
초기 상태: 🌟 [c2]
| ♟️🌟 | ||||
1. move(0, 1) 실행:
[c3] 활성화 🔵, 🌟 [c3]로 이동.
| 🔵🌟 | ||||
| ♟️ | ||||
2. { 실행:
[c3])를 기억합니다.3. move(1, 1) (블록 내부) 실행:
현재 🌟([c3]) 기준 (1, 1)인 [d4] 활성화 🔵.
🌟 [d4]로 이동.
| 🔵🌟 | ||||
| 🔵(🌟) | ||||
| ♟️ | ||||