언어

MethodHandles.CountedLoop 메서드

정의

오버로드

속성 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 핸들은 startnull다 매개 변수 형식 목록과 같이 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이nullinit 루프 변수가 #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에 추가되었습니다.

에 대한 java.lang.invoke.MethodHandles.countedLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle)Java 설명서

이 페이지의 일부는 만들고 공유한 작업을 기반으로 하며 에 설명된 조건에 따라 사용됩니다.

적용 대상

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이nullinit 루프 변수가 #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에 추가되었습니다.

에 대한 java.lang.invoke.MethodHandles.countedLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle)Java 설명서

이 페이지의 일부는 만들고 공유한 작업을 기반으로 하며 에 설명된 조건에 따라 사용됩니다.

적용 대상