표현식 그룹화(Grouping Expressions) 는 평가 순서를 지정하는 방법입니다. 이는 연산자 우선순위를 우회하여 작업해야 하는 경우 유용합니다.
() 를 사용하여 표현식을 그룹화할 수 있습니다.
예를 들어 아래의 표현식 (y2 - y1) 및 (x2 - x1) 은 숫자를 나누기 전에 평가됩니다.
(y2 - y1) / (x2 - x1)
다음과 같은 게임 내 폭발을 예시로 들어 보겠습니다. 이 폭발의 피해는 플레이어와의 거리를 기준으로 스케일 조절되며 플레이어는 방어구를 장착하여 총 피해를 줄일 수 있습니다.
BaseDamage : float = 100
Armor : float = 15
# 플레이어와 폭발 간의 거리 제곱으로 스케일 조절합니다. 최솟값은 1.0입니다.
DistanceScaling : float = Max(1.0, Pow(PlayerDistance, 2.0))
# 멀리서 폭발할수록 플레이어가 받는 피해가 줄어듭니다.
var ExplosionDamage : float = BaseDamage / DistanceScaling
# 방어구로 피해를 줄입니다.
set ExplosionDamage -= Armor
# 방어력이 아주 높은 방어구를 장착한 플레이어가 폭발을 통해 치유하지 않도록 음수 피해 값을 방지합니다.
set ExplosionDamage = Max(0.0, ExplosionDamage)
그룹화를 사용하면 위 예시를 다음과 같이 다시 작성할 수 있습니다.
BaseDamage : float = 100
Armor : float = 15
DistanceScaling : float = Max(1.0, Pow(PlayerDistance, 2.0))
ExplosionDamage : float = Max(0.0, (BaseDamage / DistanceScaling) - Armor)
표현식 그룹화로 코드의 가독성 또한 개선할 수 있습니다.