subscript 된 목록을 항상 목록으로 강제?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />코드 스 니펫은 다음과 같습니다.
a = { "A", "B", "C", "D", 123};
sub1 = 목록 (1,3,5);
sub2 = 목록 (1);
쇼 (a [sub1]);
쇼 (a [sub2]);
산출:
a [sub1] = { "A", "C", 123};
a [sub2] = "A";
임의의 수의 요소를 가진리스트에 subscripting 할 수있는 방법이 있습니까? 항상 출력을리스트로 만드시겠습니까?
재 : 하위 목록을 항상 목록으로 강제?안녕 마틴,
이것은 우리가 JMP 13을 "고칠 수있는"것입니다. 일부 기존 스크립트가 이전 동작에 종속되어 있기 때문에 "수정"을 따옴표로 묶어 수정 사항을 중단으로 간주합니다. 이것이 큰 문제로 판명되면 대안을 찾아야 할 것입니다.
나는 수정 사항을 지원하는 메시지를 보는 것이 좋습니다.
재 : 하위 목록을 항상 목록으로 강제?목록 목록에서 작동하는 것이 더 좋습니다.
a = {{ "A"}, { "B"}, { "C"}, { "D"}, {123}};
sub1 = 목록 (1,3,5);
sub2 = 목록 (1);
ForceList = 함수 ({forceme},
If (Is List (forceme), forceme, EvalList (List (forceme)))
);
SubscriptList = 함수 ({inlist, subscriptlist},
if (N 개의 항목 (subscriptlist) == 1,
EvalList (List (inlist [subscriptlist]))
,
목록에있는 [subscriptlist]
)
);
산출:
show (ForceList (a [sub1]));
show (ForceList (a [sub2]));
{{ "A"}, { "C"}, {123}};
{"에이"};
쇼 (SubscriptList (a, sub1));
쇼 (SubscriptList (a, sub2));
{{ "A"}, { "C"}, {123}};
{{"에이"}};
재 : 하위 목록을 항상 목록으로 강제?그래, 그게 내가 생각한 것 같아. 내가 첨자 목록에 사용할 수 있다고 생각되는 간단한 "도우미 함수"를 썼다. 감사!
ForceList = 함수 ({forceme},
If (Is List (forceme), forceme, EvalList (List (forceme)))
);
show (ForceList (a [sub1]));
show (ForceList (a [sub2]));
산출:
{ "A", "C", 123};
{"에이"};
재 : 하위 목록을 항상 목록으로 강제?귀하의 하위 스크립트가 하나의 값을 가질 때, 그것은 항상 단일 값을 반환 할 것입니다. 아래 첨자가 여러 값을 가진 목록이면 목록 형식으로 모든 값을 반환합니다.
이 문제를 해결하려면 If 문을 사용하여 아래 첨자 목록에 몇 개의 값이 있는지 확인하고 아래 첨자에 하나의 값만있는 경우 반환 값을 감 쌉니다.
다음은 내가 조립 한 예입니다.
에이 = { "에이" , "비" , "기음" , "디" , 123 } ;
하위 1 = 명부 ( 1 , 삼 , 5 ) ;
하위 2 = 명부 ( 1 ) ;
평가 ( Eval Expr ( indicesList = { Expr ( 하위 1 ) , Expr ( 하위 2 }} ) ) ;
에 대한 ( 나는 = 1 , 나는 <= N 개 항목 ( indicesList ) , 나는 ++,
만약 ( N 개 항목 ( indicesList [ 나는 ] ) > 1 ,
임시 직원 = 에이 [ indicesList [ 나는 ]] ,
임시 직원 = 평가 ( Eval Expr ( 명부 ( Expr ( 에이 [ indicesList [ 나는 ]] ) ) ) )
) ;
보여 주다 ( 임시 직원 ) ;
) ;