Re: 변수를 전달할 때 변수 값 대신 변수 이름을 전달합니다.{ x, y }와 같은 목록에는 값이 아닌 변수의 이름이 포함됩니다. 일부 JSL 함수는 값을 파헤칩니다. 예를 들어 라인( {x1, y1}, {x2, y2} ).
EvalList 함수는 변수 이름처럼 단순한 표현식이 포함된 목록을 받아 이를 평가하고 새 목록인 { 3, 4 }를 반환합니다.
Insert Into 함수는 삽입하는 값이 목록임을 인식하고 삽입할 요소를 가져오기 위해 목록의 압축을 풉니다. 그렇기 때문에 두 요소의 또 다른 목록인 하나의 요소가 있는 목록이 있는 것입니다. 압축을 풀지 않고 두 요소 목록을 삽입하려고 하므로 목록으로 래핑합니다.
하지만 이제 중첩 목록의 내부 목록에서 평가 목록을 수행하는 방법을 알아내야 합니다. 다음과 같이 할 수 있습니다.
x=3;
y=4;
evallist({evallist({x,y})}) // {{3, 4}}
이해하기 쉽거나 어려운 지름길은 다음과 같습니다.
x=3;
y=4;
aslist(x||y) // {{3, 4}}
AsList는 행렬을 목록으로 압축하고 행 요소 목록을 만듭니다. || 연결 연산자는 두 개(또는 그 이상)의 숫자를 행 행렬에 함께 넣습니다.
Re: 변수를 전달할 때 변수 값 대신 변수 이름을 전달합니다.설명해주셔서 감사합니다! 이중 evallist를 사용하면 저에게 효과적이었습니다.
변수 전달 시 변수 값 대신 변수 이름 전달JMP 사용 15.2.1.
변수가 JSL에서 어떻게 작동하는지에 대해 오해가 있는 것 같습니다. 이 문제에 몇 번 부딪혔고 마침내 내가 뭘 잘못하고 있는지 이해하고 싶습니다.
일부 계산을 수행하고 결과를 변수에 저장한 다음 결과를 목록에 삽입하는 함수가 있습니다. 변수에 원하는 값이 포함되어 있다는 것을 알고 있지만 목록에 추가하려고 하면 변수 값 대신 변수 이름이 목록에 추가됩니다. 이들은 로컬로 정의된 변수이기 때문에 해당 함수의 범위를 벗어나는 오류가 발생합니다.
내가 생각할 수있는 곳 어디에서나 Eval/Eval List를 사용해 보았지만 작동하지 않습니다.
반환된 목록에 변수 내의 값이 포함되도록 하려면 어떻게 해야 합니까?
미리 감사드립니다!
list = {{3,4}, {1,5}, {3,2}};
deltaX = 1;
deltaY = 2;
updateList = Function({cl, dx, dy},
{newX, newY},
newX = cl[1][1] + dx;
newY = cl[1][2] + dy;
show(newX);
Insert Into(cl, {{newX, newY}}, 1);
show(cl);
return(cl);
);
list2 = updateList(list, deltaX, deltaY);
show(list2);
//this errors because list2[1][1] contains newX instead of the value 4
//list2[1][1] + 1;
결과 공유 및 소통윈도우