ifthen4.gms : 이전 릴리스 노트에서 $ifThen 테스트

설명

$if 문의 새로운 변형이 도입되었습니다. 그것은 다음과 같습니다
일반적인 구조를 가지며 적절한 중첩이 가능합니다. 구문은
조건은 $if 문과 동일합니다. $ifThen 및
대소문자를 구분하지 않는 비교 및 E는 상수 표현식 평가를 위한 것입니다. 에서
아래 예에서는 해당 문의 모든 블록을 실행합니다.

기여자: Alex

소형 모델 유형 :슬롯 나라


카테고리 : 슬롯 나라 테스트 라이브러리


메인 파일 : ifthen4.gms

$title은 이전 릴리스 노트(IFTHEN4,SEQ=454)에서 $ifThen을 테스트합니다.

$onText
$if 문의 새로운 변형이 도입되었습니다. 그것은 다음과 같습니다
일반적인 구조를 가지며 적절한 중첩이 가능합니다. 구문은
조건은 $if 문과 동일합니다. $ifThen 및
$elseIf에는 $if 문과 동일한 수정자가 있습니다. 즉, I for
대소문자를 구분하지 않는 비교 및 E는 상수 표현식 평가를 위한 것입니다. 에서
아래 예에서는 해당 문의 모든 블록을 실행합니다.

기여자: 알렉스
$offText

$onDollar
$maxGoTo 10 $세트 x a
$라벨 2
$ifThen %x% == a $set x 'c' $log $ifThen with x=%x%
$elseIf %x% == b $set x 'k' $log $elseIf 1 with x=%x%
$elseIf %x% == c $set x 'b' $log $elseIf 2 with x=%x%
$else $set x 'e' $log $else(x=%x%)
$endIf $if NOT %x% == e $goTo two

$평가 x 1
$라벨 3
'x=%x%'를 표시;
$ifThen %x% == 1 $eval x %x%+1
$elseIf %x% == 2 $eval x %x%+1
$elseIf %x% == 3 $eval x %x%+1
$elseIf %x% == 4 $eval x %x%+1
$else $set x 완료
$endIf $if NOT %x% == 완료 $goTo three

*이것은 약간 인위적이지만 좀 더 미묘한 기능을 보여줍니다. $goTo 문을 통해 반복 구문을 사용할 때마다 우리는 무한 루프의 가능성으로부터 자신을 보호해야 합니다. 라벨로 다시 이동하는 횟수가 계산되며 한도에 도달하면 슬롯 나라에서 오류가 발생합니다. %string% 참조는 한 번만 대체된다는 점에 유의하는 것이 중요합니다.

*길이가 길고 중첩된 ithen/else 구조는 디버그하기 어려울 수 있습니다. 시작, $ifThen 및 끝, $endIf에 태그를 지정하는 것이 도움이 될 수 있습니다. 예를 들어 다음 줄은 태그가 일치하지 않기 때문에 실패합니다.

$ifThen.one x == x
$endIf.one

*$if 문과 마찬가지로 $ifThen 스타일 문이 있는 줄의 문은 선택 사항입니다. 다음 두 명령문은 동일한 결과를 제공합니다.

$echo $remark 이것은 abc > abc.gms입니다.
$echo $remark 이것은 efg > efg.gms입니다.
$echo $remark 이것은 xyz > xyz.gms입니다.

$set 유형 '낮음'
$라벨 하단
$ifThenI %type% == 낮음 $include abc
$elseIfI %type% == med $include efg
$else $include xyz
'xyz'를 표시합니다.
$endIf
'첫 번째 부분 하단'을 표시합니다.

$ifThenI %type% == 낮음
$include abc
$elseIfI %type% == 의료
$include efg
$else
$include xyz
'xyz'를 표시합니다.
$endIf
'두 번째 부분 하단'을 표시합니다.

$ifI %type%==낮음 $set 유형 'med' $goTo 낮음
$ifI %type%==med $set 유형 'xxx' $goTo lower

* 같은 줄에서 $ifThen, $elseIf 또는 $else 바로 뒤에 오는 명령문은 다른 달러 제어 명령문의 시퀀스이거나 적절한 슬롯 나라 구문을 포함할 수 있습니다. $endIf 바로 뒤에 오는 문에는 다른 달러 제어 문만 포함될 수 있습니다.

$ifThen.two c==c '태그 2에 대해 true'를 표시합니다.
$ifThen.3 a==a $log 태그 3의 경우 true
'태그 3에 대한 then 절'을 표시합니다.
$ifThen.four x==x는 '태그 4에 대해 true'를 표시합니다.
태그 4에 대해 $log true
$else.four
'태그 4에 대한 else 절'을 표시합니다.
$endIf.four $log endif 4
$endIf.3 $log endif 3
$endIf.two $log endif 2

$exit

그러면 다음과 같은 슬롯 나라 프로그램이 생성됩니다.

1은 '태그 2에 대해 true'를 표시합니다.
3 '태그 3에 대한 then 절'을 표시합니다.
4 '태그 4에 대해 true'를 표시합니다.

다음 로그 출력으로

--- 컴파일 시작
태그 3의 경우 true
태그 4의 경우 true
엔디프 4
엔디프 3
endif 2