MethodHandles.CountedLoop 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
| 속성 | Description |
|---|---|
| CountedLoop(MethodHandle, MethodHandle, MethodHandle, MethodHandle) |
숫자 범위에 대해 계산되는 루프를 생성합니다. |
| CountedLoop(MethodHandle, MethodHandle, MethodHandle) |
지정된 수의 반복을 실행하는 루프를 생성합니다. |
CountedLoop(MethodHandle, MethodHandle, MethodHandle, MethodHandle)
숫자 범위에 대해 계산되는 루프를 생성합니다.
[Android.Runtime.Register("countedLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)]
public static Java.Lang.Invoke.MethodHandle? CountedLoop(Java.Lang.Invoke.MethodHandle? start, Java.Lang.Invoke.MethodHandle? end, Java.Lang.Invoke.MethodHandle? init, Java.Lang.Invoke.MethodHandle? body);
[<Android.Runtime.Register("countedLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)>]
static member CountedLoop : Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle -> Java.Lang.Invoke.MethodHandle
매개 변수
- start
- MethodHandle
루프 카운터int의 시작 값을 반환하는 비 핸들null입니다.
다른 제약 조건은 위의 내용을 참조하세요.
- end
- MethodHandle
루프 카운터의 끝 값을 반환하는 비null 핸들입니다(루프가 실행 end-1됨). 결과 형식은 .이어야 int합니다. 다른 제약 조건은 위의 내용을 참조하세요.
- init
- MethodHandle
루프 변수의 초기 값을 제공하는 선택적 이니셜라이저입니다.
기본 초기 값을 의미하는 것일 null수 있습니다. 다른 제약 조건은 위의 내용을 참조하세요.
- body
- MethodHandle
루프의 본문이며, 그렇지 않을 null수 있습니다.
표준 사례에서 루프 매개 변수 및 결과 형식을 제어합니다(자세한 내용은 위 참조).
자체 반환 형식(void가 아닌 경우)과 매개 변수(카운터의 경우) int 를 허용해야 하며, 추가 형식 수를 허용할 수 있습니다.
다른 제약 조건은 위의 내용을 참조하세요.
반품
루프를 나타내는 메서드 핸들입니다.
- 특성
설명
숫자 범위에 대해 계산되는 루프를 생성합니다. 이는 #loop(MethodHandle[][]) 제네릭 루프 결합자에 대한 편리한 래퍼입니다.
루프 카운터 i 는 형식 int의 루프 반복 변수입니다. 및 end 핸들은 start 루프 카운터의 시작(포함) 및 끝(배타적) 값을 결정합니다. 루프 카운터는 핸들 평가 start 에서 반환된 값으로 int 초기화되고 단계 너비가 1인(단독으로) 반환된 end 값으로 실행됩니다.
핸들이 body 비 형식void 을 반환하는 경우 해당 형식 V의 선행 루프 반복 변수도 존재합니다. 이 변수는 선택적 init 핸들을 사용하여 초기화되거나 해당 핸들이 #empty 경우 형식 V 의 기본값으로 초기화됩니다 null.
각 반복에서 반복 변수는 핸들의 호출 body 에 전달됩니다. 본문(형식V)에서 반환된 값이 아닌void 값은 선행 반복 변수를 업데이트합니다. 루프 핸들 실행의 결과는 해당 변수의 최종 V 값이 됩니다(또는 void 변수가 없는 V 경우).
인수 핸들에 대해 다음 규칙이 유지됩니다<.ul<>li>The 및 end 핸들은 start 둘 null다 매개 변수 형식 목록과 같이 I 공통 형식int을 반환해야 합니다.
<li>핸들이 body 아니어야 합니다. 해당 형식은 형식이어야 하며, 그렇지 V 않으면 null형식(V I A...)V이어야void(I A...)void 합니다. (이 경우 이름에 형식을 할당하고 (V I A...)V 형식이 voidV 매개 변수 목록에서 조용히 삭제되고 .(I A...)V) <voidvoidVli>본문의 매개 변수 목록은 (V I A...) em>내부 매개 변수 목록/em이라는 <형식 목록에< 기여합니다>. 다른 루프 파트의 매개 변수 목록을 제한합니다.
<li>특수한 경우, 본문이 추가 A 형식 없이만 V 기여하고 I 형식을 지정하는 경우 내부 매개 변수 목록은 핸들의 end 인수 형식 A... 에 의해 확장됩니다.
<li>반복 변수 형식 (V I) 을 내부 매개 변수 목록에서 삭제하면 결과 짧은 목록을 (A...) em>외부 매개 변수 목록</em>이라고 합니다<.
<li>본문 반환 형식 V이 아닌void 경우 루프의 추가 상태 변수 형식을 결정합니다. 본문은 선행 매개 변수를 수락하고 이 형식 V의 값을 반환해야 합니다.
<li>가 아닌null 경우 init 반환 형식V이 있어야 합니다. 해당 매개 변수 목록(일부 형식 <c>(A*)</c>)은 외부 매개 변수 목록 (A...)과 효과적으로 동일해야 합니다.
<li>If이null면 init 루프 변수가 #empty 기본값으로 초기화됩니다.
<li>일부 형식(A*)의 start 매개 변수 목록은 외부 매개 변수 목록(A...)과 효과적으로 동일해야 합니다.
<li>마찬가지로 매개 변수 목록은 외부 매개 변수 목록 end 과 효과적으로 동일해야 합니다.
</ul>
결과 루프 핸들의 결과 형식 및 매개 변수 서명은 다음과< 같이 결정됩니다. ul><li>루프 핸들의 결과 형식은 본문의 결과 형식 V 입니다.
<li>루프 핸들의 매개 변수 형식은 외부 매개 변수 목록의 형식 (A...)입니다.
</ul>
결과 루프 핸들에 대한 의사 코드는 다음과 같습니다. 코드 V/v 에서 두 번째 루프 변수의 형식/값과 루프의 결과 형식을 나타내고 A.../a... 루프에 전달된 인수를 나타냅니다.
<blockquote>
{@code
int start(A...);
int end(A...);
V init(A...);
V body(V, int, A...);
V countedLoop(A... a...) {
int e = end(a...);
int s = start(a...);
V v = init(a...);
for (int i = s; i < e; ++i) {
v = body(v, i, a...);
}
return v;
}
}
</blockquote>
9에 추가되었습니다.
이 페이지의 일부는 만들고 공유한 작업을 기반으로 하며 에 설명된 조건에 따라 사용됩니다.
적용 대상
CountedLoop(MethodHandle, MethodHandle, MethodHandle)
지정된 수의 반복을 실행하는 루프를 생성합니다.
[Android.Runtime.Register("countedLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)]
public static Java.Lang.Invoke.MethodHandle? CountedLoop(Java.Lang.Invoke.MethodHandle? iterations, Java.Lang.Invoke.MethodHandle? init, Java.Lang.Invoke.MethodHandle? body);
[<Android.Runtime.Register("countedLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)>]
static member CountedLoop : Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle -> Java.Lang.Invoke.MethodHandle
매개 변수
- iterations
- MethodHandle
이 루프가 실행되어야 하는 반복 횟수를 반환하는 비null 핸들입니다. 핸들의 결과 형식은 .이어야 int합니다. 다른 제약 조건은 위의 내용을 참조하세요.
- init
- MethodHandle
루프 변수의 초기 값을 제공하는 선택적 이니셜라이저입니다.
기본 초기 값을 의미하는 것일 null수 있습니다. 다른 제약 조건은 위의 내용을 참조하세요.
- body
- MethodHandle
루프의 본문이며, 그렇지 않을 null수 있습니다.
표준 사례에서 루프 매개 변수 및 결과 형식을 제어합니다(자세한 내용은 위 참조).
자체 반환 형식(void가 아닌 경우)과 매개 변수(카운터의 경우) int 를 허용해야 하며, 추가 형식 수를 허용할 수 있습니다.
다른 제약 조건은 위의 내용을 참조하세요.
반품
루프를 나타내는 메서드 핸들입니다.
- 특성
설명
지정된 수의 반복을 실행하는 루프를 생성합니다. 이는 #loop(MethodHandle[][]) 제네릭 루프 결합자에 대한 편리한 래퍼입니다.
반복 횟수는 핸들 평가 결과에 따라 iterations 결정됩니다. 루프 카운터 i 는 형식 int의 추가 루프 반복 변수입니다. 이 값은 0으로 초기화되고 각 반복에서 1씩 증가합니다.
핸들이 body 비 형식void 을 반환하는 경우 해당 형식 V의 선행 루프 반복 변수도 존재합니다. 이 변수는 선택적 init 핸들을 사용하여 초기화되거나 해당 핸들이 #empty 경우 형식 V 의 기본값으로 초기화됩니다 null.
각 반복에서 반복 변수는 핸들의 호출 body 에 전달됩니다. 본문(형식V)에서 반환된 값이 아닌void 값은 선행 반복 변수를 업데이트합니다. 루프 핸들 실행의 결과는 해당 변수의 최종 V 값이 됩니다(또는 void 변수가 없는 V 경우).
인수 핸들에 대한 다음 규칙 보존:ul>li 핸들은 iterations 반드시 null매개 변수 형식 int목록과 같이 I 형식을 반환해야 합니다.><<
<li>핸들이 body 아니어야 합니다. 해당 형식은 형식이어야 하며, 그렇지 V 않으면 null형식(V I A...)V이어야void(I A...)void 합니다. (이 경우 이름에 형식을 할당하고 (V I A...)V 형식이 voidV 매개 변수 목록에서 조용히 삭제되고 .(I A...)V) <voidvoidVli>본문의 매개 변수 목록은 (V I A...) em>내부 매개 변수 목록/em이라는 <형식 목록에< 기여합니다>. 다른 루프 파트의 매개 변수 목록을 제한합니다.
<li>특수한 경우, 본문이 추가 A 형식 없이만 V 기여하고 I 형식을 지정하는 경우 내부 매개 변수 목록은 핸들의 iterations 인수 형식 A... 에 의해 확장됩니다.
<li>반복 변수 형식 (V I) 을 내부 매개 변수 목록에서 삭제하면 결과 짧은 목록을 (A...) em>외부 매개 변수 목록</em>이라고 합니다<.
<li>본문 반환 형식 V이 아닌void 경우 루프의 추가 상태 변수 형식을 결정합니다. 본문은 선행 매개 변수를 수락하고 이 형식 V의 값을 반환해야 합니다.
<li>가 아닌null 경우 init 반환 형식V이 있어야 합니다. 해당 매개 변수 목록(일부 형식 <c>(A*)</c>)은 외부 매개 변수 목록 (A...)과 효과적으로 동일해야 합니다.
<li>If이null면 init 루프 변수가 #empty 기본값으로 초기화됩니다.
<li>일부 형식(A*)의 iterations 매개 변수 목록은 외부 매개 변수 목록(A...)과 효과적으로 동일해야 합니다.
</ul>
결과 루프 핸들의 결과 형식 및 매개 변수 서명은 다음과< 같이 결정됩니다. ul><li>루프 핸들의 결과 형식은 본문의 결과 형식 V 입니다.
<li>루프 핸들의 매개 변수 형식은 외부 매개 변수 목록의 형식 (A...)입니다.
</ul>
결과 루프 핸들에 대한 의사 코드는 다음과 같습니다. 코드 V/v 에서 두 번째 루프 변수의 형식/값과 루프의 결과 형식을 나타내고 A.../a... 루프에 전달된 인수를 나타냅니다.
<blockquote>
{@code
int iterations(A...);
V init(A...);
V body(V, int, A...);
V countedLoop(A... a...) {
int end = iterations(a...);
V v = init(a...);
for (int i = 0; i < end; ++i) {
v = body(v, i, a...);
}
return v;
}
}
</blockquote>
9에 추가되었습니다.
이 페이지의 일부는 만들고 공유한 작업을 기반으로 하며 에 설명된 조건에 따라 사용됩니다.