FOR와 FOR EACH 루프의 차이점누군가 이것이 이유를 설명할 수 있습니까?
dt = Open( "$SAMPLE_DATA/Fitness.jmp" );
col = { :Runtime, :RunPulse, :RstPulse };
y expr = Expr( Y() );
For( c = 1, c <= N Items( col ), c++,
Insert Into( y expr, col[c] );
);
Name Expr(y expr);예상 출력을 생성합니다
Y( :Runtime, :RunPulse, :RstPulse )
하지만 이것은:
dt = Open( "$SAMPLE_DATA/Fitness.jmp" );
col = { :Runtime, :RunPulse, :RstPulse };
y expr = Expr( Y() );
For each({coll, index},col,
Insert Into( y expr, coll );
);
Name Expr(y expr);다음을 생성합니다.
Y( ., ., . )
나는 그것이 동일한 결과를 줄 것이라고 기대합니까? 동일한 결과를 얻으려면 FOR EACH 루프를 어떻게 변경해야 합니까?
소비자 및 시장 조사결과 공유 및 전달Re: FOR와 FOR EACH 루프의 차이점이는 버그가 아닙니다. 이 경우에는 실제로 JMP의 일관성이 유지됩니다.목록을 인덱싱할 때 결과는 평가되지 않은 채 반환됩니다.인덱싱된 항목의 결과를 변수에 저장할 때 결과를 평가합니다.기억 각각({값, 인덱스}, 목록, 표현식... ) 는 다음과 같습니다 For( index = 1, index <= N Items( list ), index++, value = list[index]; 표현식... )
A = {1 + 2, 2 + 3, 3 + 4};
b = {};
res = A[1];
Insert Into( b, A[1] );
Insert Into( b, res );
b
/*:
{1 + 2, 3}
Re: FOR와 FOR EACH 루프의 차이점네, 바로 이거예요.
1. 행별 평가를 위한 For Each Row 문이 있고 2. For Each는 For 루프와 동일하게 목록을 처리해야 합니다(그리고 저는 열에 대한 참조 목록으로 작업하려고 합니다).
이것은 버그입니까, 아니면 의도된 동작입니까?
Re: FOR와 FOR EACH 루프의 차이점내 생각엔 열이 For Each의 현재 행 값으로 평가되는 것 같습니다. 예를 들어 Row() = 1을 추가하여 이를 테스트할 수 있습니다. Name Expr()을 사용하면 이를 방지할 수 있습니다.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Fitness.jmp");
col = {:Runtime, :RunPulse, :RstPulse};
y expr = Expr(Y());
For(c = 1, c <= N Items(col), c++,
Insert Into(y expr, col[c]);
);
Show(Name Expr(y expr));
Row() = 1;
y expr = Expr(Y());
For Each({coll, index}, col,
Insert Into(y expr, coll);
);
Show(Name Expr(y expr));
y expr = Expr(Y());
For Each({coll, index}, col,
Insert Into(y expr, Name Expr(coll));
);
Show(Name Expr(y expr));