5.1 블록(Blocks)

5.1 블록(Blocks)

Haxe의 블록은 여는 중괄호 {로 시작하고 닫는 중괄호 }로 끝나요. 블록은 여러 표현식을 포함할 수 있으며, 각 표현식 뒤에는 세미콜론 ;이 옵니다. 일반 구문은 다음과 같습니다:

{
  expr1;
  expr2;
  // ...
  exprN;
}

블록 표현식의 값과 그에 따른 타입은 마지막 하위 표현식의 값과 타입과 동일해요.

블록은 var 표현식으로 선언된 지역 변수와 function 표현식으로 선언된 지역 함수를 포함할 수 있어요. 이들은 블록 안과 하위 블록 안에서는 사용 가능하지만, 블록 밖에서는 사용할 수 없습니다. 또한 선언 이후에만 사용할 수 있어요. 다음 예제는 var를 사용하지만 function 사용에도 같은 규칙이 적용됩니다:

{
  a; // error, `a` is not declared yet
  var a = 1; // declare `a`
  a; // ok, `a` was declared
  {
    a; // ok, `a` is available in sub-blocks
  }
  // ok, `a` is still available after
  // sub-blocks
  a;
}
a; // error, `a` is not available outside

런타임에 블록은 위에서 아래로 평가됩니다. 제어 흐름(예: 예외(exceptions)return 표현식)이 블록을 일찍 떠날 수 있고 이후 표현식이 평가되지 않게 할 수 있어요.

출처: Blocks

본문

블록 구문

블록은 {} 사이에 세미콜론으로 구분된 여러 표현식을 담아요. 블록의 값/타입은 마지막 표현식의 그것과 같습니다.

스코프

var/function으로 선언된 지역 변수와 함수는 블록과 하위 블록 안에서만 선언 후에 사용할 수 있고, 블록 밖에서는 접근할 수 없어요. 하위 블록은 상위 블록의 변수에 접근할 수 있습니다.

실행 순서

블록은 위에서 아래로 평가됩니다. 예외나 return은 블록을 일찍 떠날 수 있어요.

더 알아보기