조건이 참일 때 로직을 반복하고 결과를 반환합니다.
While ([이니셜 변수] ; 조건 ; [로직] ; 결과)
이니셜 변수 - 아래 매개변수에서 사용할 수 있는 변수 정의.
조건 - 각각의 루프 반복 전에 평가된 부울 표현식. 참인 경우 루프가 반복됩니다. 거짓인 경우 루프가 중단됩니다.
로직 - 루프가 반복될 때마다 평가되는 변수 정의.
결과 - 루프가 중단되면 반환되는 표현식.
텍스트, 숫자, 날짜, 시간, 타임스탬프, 컨테이너
FileMaker Pro 18.0 Advanced
While 함수는 다음 단계를 수행합니다.
1. 이니셜 변수
매개변수를 평가합니다.
2. 조건
매개변수를 평가합니다.
3. 조건
에 따른 동작:
•참(0이 아닌 숫자 결과)인 경우, 로직
을 평가하고 2단계를 반복합니다.
•거짓(0)인 경우, 루프를 중단하고 결과
를 반환합니다.
이니셜 변수
및 로직
앞뒤에 괄호 []를 추가하고 세미콜론으로 구분하여 여러 개의 변수 정의를 지정할 수 있습니다. 예를 들어 다음과 같습니다.
While(
[initVar1 = value1 ; initVar2 = value2 ; ...] ;
조건 ;
[logicVar1 = expression1 ; logicVar2 = expression2 ; ...] ;
결과
)
이니셜 변수
및 로직
매개변수에서 지정된 변수는 왼쪽에서 오른쪽으로 평가됩니다. 이 변수는 동일한 범위 내에 있으며 조건
및 결과
매개변수에서 사용할 수 있습니다. 변수 사용하기를 참조하십시오.
한 루프 반복의 정보를 다른 루프 반복까지 유지해야 하는 변수는 로직
매개변수에서 사용하기 전에 초기화해야 합니다. 그렇지 않으면 값이 삭제됩니다.
•FileMaker 클라이언트의 응답 중단을 발생시킬 수 있는 무한 루프를 막기 위해, 루프 반복이 제한을 초과한 경우 이 함수는 "?"를 반환합니다. 제한을 설정하려면 SetRecursion 함수를 사용하십시오.
반복되는 변수 $a
의 값을 모두 더합니다. 루프가 반복될 때마다 count
가 증가되고 count를 사용하여 $a
변수 반복이 지정되며 해당 값은 누계
에 추가됩니다. 이 예제에서는 150을 반환합니다.
While(
[
count = 0 ;
total = 0 ;
$a[1] = 25 ;
$a[2] = 50 ;
$a[3] = 75
] ;
count < 3 ;
[
count = count + 1 ;
total = total + $a[count]
] ;
total
)
두 텍스트 값 사이에 다섯 개의 점을 추가합니다. While 함수에서 City
함수 변수의 범위는 Let 함수의 범위와 다르기 때문에 이 예제는 San Francisco.....Paris를 반환합니다.
Let(
City = "Paris";
While(
[City = "San Francisco"; i = 0] ;
i < 5 ;
[
i = i + 1 ;
City = City & "."
] ;
시
)
& City)
함수 변수 City
의 모든 인스턴스가 로컬 변수 $City
로 대치된 경우, $City
가 계산 전체에서 동일한 범위를 가지기 때문에 해당 예제는 San Francisco.....San Francisco.....를 반환합니다.
함수 변수의 범위가 While 앞에서 정의된 경우, While 루프의 이니셜 변수
및 로직
매개변수에서 정의된 경우와 비교하여 어떻게 다른지 설명합니다.
While 루프 앞에서 정의된 it1
및 it2
의 값은 루프 내에서 사용 가능하지만, 루프내에서 it1
및 it2
의 변경사항은 루프 뒤에서 이 변수의 값에 영향을 주지 않습니다. 또한 이 예제는 이니셜 변수
매개변수에서 it2
를 초기화하지 않은 경우, 각 루프가 반복된 후에 로직
매개변수에서 정의된 it2
변수의 값 2가 어떻게 유실되는지 보여줍니다.
Let(
[// Before While loop; sets line 1.0 of result
it1 = "a"; // Defined in Let's scope
it2 = 1; // Defined in Let's scope
out = "1.0 " & it1 & " " & it2 & ¶
];
While
(
[// initialVariables; sets lines 2.0 and 3.0 of result
i = 0;
out = out & "2.0 " & it1 & " " & it2 & ¶;
it1 = "b"; // Defined in While's scope
out = out & "3.0 " & it1 & " " & it2 & ¶
];
// Condition
i < 2;
[// logic; sets lines 4.x and 5.x of result
// Variables defined in the logic parameter in previous passes
// through the loop are deleted at this point
i = i + 1;
out = out & "4." & i & " " & it1 & " " & it2 & ¶;
it1 = "c"; // Reused in While's scope
it2 = 2; // Redefined in While's scope
out = out & "5." & i & " " & it1 & " " & it2 & ¶
];
// result; sets line 6.0 of result
out & "6.0 " & it1 & " " & it2 & ¶
)
// After While loop; sets line 7.0 of result
& "7.0 " & it1 & " " & it2 & ¶
)
결과:
1.0 a 1
2.0 a 1
3.0 b 1
4.1 b 1
5.1 c 2
4.2 c 1
5.2 c 2
6.0 c 2
7.0 a 1