함수의 반환 값에 인덱싱하기오늘의 과제:
f=Function({}, {1,2,3});
tmp=f();
y=tmp[1]; // works
x=f()[1] // doesn't work
이 문제를 이해하는 것은 JSL이 어떻게 작동하는지 이해하는 데 큰 도움이 됩니다 : - )
자동화 및 스크립팅Re: 함수의 반환 값에 대한 인덱싱역문제:
names default to here(1);
x=1;
Eval(x=1); // "does the same"
x= Expr(hello);
Eval(x= Expr(hello)); // fails
Re: 함수의 반환 값에 대한 인덱싱Head는 자신의 주장을 평가하는가?
양수인 함수는 자신의 주장을 평가하나요?
1. 인수: 아니요
2. 인수: 예
결과에서 첫 번째 항목을 가져오기 전에 표현식을 "수동으로" 평가해야 하는 경우 Eval() 함수를 사용하십시오.
x=f()[1] // doesn't work
x=Eval(f())[1] // works
접착제 에 관하여:
인수: 예
.... 그리고 평가:
물론이죠!
그 외에도, 인자에 대한 첫 번째 평가 후에 반환 값에 대한 추가 평가가 있습니다. *) 따라서
Eval(print(1);x= Expr(hello);print(x); Expr(print(2)));
x=Expr(안녕하세요) 를 올바르게 할당하고 출력합니다:

*) -> 링크/문서/커뮤니티?
Re: 함수의 반환 값에 대한 인덱싱
If you need to evaluate an expression "manually" [
~ 전에 taking the fist item from the result], use Eval():
</CODE>
<HR />
</BLOCKQUOTE>
<P>제 생각에는 그런 코드는 읽기 어렵고 사용해서는 안 됩니다. 그냥 값을 반환하고 그 값을 사용하는 것이 좋습니다. 특정 인덱스의 값만 필요하고 ( <STRONG>총 개수를 알고</STRONG> 있다면) 리스트를 사용하고 나머지는 버리는 것이 좋습니다.</P>
<BR />
<PRE><CODE class=" language-jsl">Names Default To Here(1);
return_list = Function({}, {Default Local}, return({1,2,3}));
{res, _, _} = return_list();
show(res, _);
올바르게 할당합니다 x=Expr(안녕하세요) 및 인쇄물:
제 생각에는 오류가 발생해야 합니다 (현재로서는 예상치 못한 동작입니다). 제 추측으로는 Glue의 동작 방식(마지막 결과를 반환한 후 평가하는 방식) 때문에 이런 현상이 나타나는 것 같습니다.
Names Default To Here(1);
Eval(
x = Expr(hello);
Print(x);
);<BR />// Eval(Glue(Assign(x, Expr(hello)), Print(x)));
vs ( 이름 확인 불가: 'hello'에 대한 접근 또는 평가에서 hello, hello/*###*/ )
Names Default To Here(1);
Eval(
x = Expr(hello);
);<BR />// Eval(Assign(x, Expr(hello)));
이런 경우에 Eval을 사용하면 항상 이렇게 되어야 한다고 생각합니다 (Expr() 평가 시도 -> 평가 실패 -> 오류 발생). @EvanMcCorkle
더 보기...
Names Default To Here(1);
a = 1;
Try(
Eval(
x = Expr(hello);
y = Expr(a);
);
,
Write("\!NFirst Example: ", exception_msg);
);
Try(
Eval(
y = Expr(a);
x = Expr(hello);
);
,
Write("\!Second Example: ", exception_msg);
);
만약 '안녕하세요'라는 이름만 변수에 저장하고 싶다면, NameExpr() 함수를 사용하세요.
Names Default To Here(1);
x = NameExpr(hello);
스크립팅 가이드 > 프로그래밍 방법 > 고급 표현식, 매크로 및 목록 부분에 몇 가지 오류가 있지만 전체적으로는 정확하고 읽어볼 만합니다.
Re: 함수의 반환 값에 대한 인덱싱추가적인 예시와 의견에 감사드립니다.
Re: 함수의 반환 값에 대한 인덱싱아, 인자를 사용하여 정의된 함수를 살펴보면 훨씬 더 명확해집니다.
g=Function({x}, {1,2,3});
x=g()[1] // doesn't work (uses the function itself and takes the first element)
x=g("")[1] // works -> 1 (runs the function - then takes the first element)