JSL: "<< 수식 설정" 수식 내의 변수를 상수/리터럴로 처리이 작업을 수행하는 쉬운 방법이 있어야한다고 생각하지만 그것은 나를 피하고 있습니다 ...
예:
blockSize = 15;
col<<set formula(Sequence(1,1000,1,blockSize));
스크립트를 실행한 후 데이터 테이블에서 수식을 봅니다. "blockSize"는 여전히 Sequence()의 네 번째 입력으로 사용되고 있습니다.
반복되는 각 열에 대해 변경되는 루프 내에서 blockSize를 동적으로 정의할 것이므로 실제로는 이것을 원하지 않습니다. 데이터 테이블의 수식을 "Sequence(1,1000,1, blockSize)" 대신 "Sequence(1,1000,1,15)"로 하려면 어떻게 해야 합니까?
감사!
Re: JSL: "<< 수식 설정" 수식 내의 변수를 상수/리터럴로 취급eval(evalexpr( ... expr( x ) ... )) 패턴을 사용하는 또 다른 접근법
dt=newtable("example", newcolumn("col"));
blockSize = 15;
<STRONG>eval</STRONG>(<STRONG>evalexpr</STRONG>(col<<SET formula="">expr(blockSize)))));</SET>
Formula with blocksize value substituted for the variableFormula with blocksize value substituted for the variable블록 크기 값이 변수로 대체된 수식
이러한 모든 솔루션이 해결하고 있는 문제는 표현의 일부를 미리 평가하는 것이지만 전부는 아닙니다.
EvalExpr()은 인수를 부분적으로 평가하는 함수입니다. 평가하려는 부분은 Expr() 함수 안에 있습니다. (따라서 이름이 EvalExpr입니다.) 결과는 setFormula 작업을 수행하기 위해 평가해야 하는 표현식입니다.
Re: JSL: "<< 수식 설정" 수식 내의 변수를 상수/리터럴로 취급Somes 저는 변수 대체와 함께 명령 문자열을 사용하는 것을 좋아합니다. 특히 동일한 명령을 두 번 이상 사용해야 하고 수식이나 표현식에 변수가 두 개 이상 있는 경우에 그렇습니다.
dt = New Table( "Testit",
Add Rows( 1500 ),
New Column( "bbb", Numeric, "Continuous", Format( "Best", 12 ), ),
New Column( "ccc", Numeric, "Continuous", Format( "Best", 12 ), ),
);
cmdStr = "^curcol^ << set formula(Sequence(1,1000,1,^blocksize^));";
curcol = ":bbb";
blocksize = 15;
eval(parse(evalInsert(cmdStr)));
// Eval Insert substitutes the variable values delimited by ^
// Parse converts the string to an expression
// Eval runs the expression
// uncomment the next line to see results of evalInsert
// show(evalInsert(cmdStr) );
//==can reuse===
curcol =":ccc" ;
blocksize = 5;
eval(parse(evalInsert(cmdStr)));
Re: JSL: "<< 수식 설정" 수식 내의 변수를 상수/리터럴로 취급blockSize = 15;
Eval(
Substitute(
Expr( col << Set Formula( Sequence( 1, 1000, 1, bbb ) ) ),
Expr( bbb ),
blockSize
)
);