참조 > 함수 참조 > 논리 함수 > While
 

While

조건이 참일 때 로직을 반복하고 결과를 반환합니다.

포맷 

While ([이니셜 변수] ; 조건 ; [로직] ; 결과)

매개 변수 

이니셜 변수 - 아래 매개변수에서 사용할 수 있는 변수 정의.

조건 - 각각의 루프 반복 전에 평가된 부울 표현식. 참인 경우 루프가 반복됩니다. 거짓인 경우 루프가 중단됩니다.

로직 - 루프가 반복될 때마다 평가되는 변수 정의.

결과 - 루프가 중단되면 반환되는 표현식.

반환되는 데이터 유형 

텍스트, 숫자, 날짜, 시간, 타임스탬프, 컨테이너

다음에서 발생 

FileMaker Pro 18.0 Advanced

설명 

While 함수는 다음 단계를 수행합니다.

1. 이니셜 변수 매개변수를 평가합니다.

2. 조건 매개변수를 평가합니다.

3. 조건에 따른 동작:

참(0이 아닌 숫자 결과)인 경우, 로직을 평가하고 2단계를 반복합니다.

거짓(0)인 경우, 루프를 중단하고 결과를 반환합니다.

이니셜 변수로직 앞뒤에 괄호 []를 추가하고 세미콜론으로 구분하여 여러 개의 변수 정의를 지정할 수 있습니다. 예를 들어 다음과 같습니다.

While(
[initVar1 = value1 ; initVar2 = value2 ; ...] ;
조건 ;
[logicVar1 = expression1 ; logicVar2 = expression2 ; ...] ;
결과
)

이니셜 변수로직 매개변수에서 지정된 변수는 왼쪽에서 오른쪽으로 평가됩니다. 이 변수는 동일한 범위 내에 있으며 조건결과 매개변수에서 사용할 수 있습니다. 변수 사용하기를 참조하십시오.

한 루프 반복의 정보를 다른 루프 반복까지 유지해야 하는 변수는 로직 매개변수에서 사용하기 전에 초기화해야 합니다. 그렇지 않으면 값이 삭제됩니다.

참고 

FileMaker 클라이언트의 응답 중단을 발생시킬 수 있는 무한 루프를 막기 위해, 루프 반복이 제한을 초과한 경우 이 함수는 "?"를 반환합니다. 제한을 설정하려면 SetRecursion 함수를 사용하십시오.

예제 1 

반복되는 변수 $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
)

예제 2 

두 텍스트 값 사이에 다섯 개의 점을 추가합니다. 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.....를 반환합니다.

예제 3 

함수 변수의 범위가 While 앞에서 정의된 경우, While 루프의 이니셜 변수로직 매개변수에서 정의된 경우와 비교하여 어떻게 다른지 설명합니다.

While 루프 앞에서 정의된 it1it2의 값은 루프 내에서 사용 가능하지만, 루프내에서 it1it2의 변경사항은 루프 뒤에서 이 변수의 값에 영향을 주지 않습니다. 또한 이 예제는 이니셜 변수 매개변수에서 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

관련 주제 

함수 참조(카테고리순)

함수 참조(알파벳순)

공식 정보

함수 정보

계산 필드 정의하기

공식에 연산자 사용하기