有没有办法创建多层数组?你好,
1) 我正在尝试创建一个多层数组,其中一个键可获得多个层。有什么办法可以做到这一点。例如,我的 jsl 应如下所示:
EX = 关联数组( {"蓝色", "绿色", "红色"}, {1, 2, 3}, {"熊", "壁虎", "兔子"} );
我正在尝试这样操作:如果我选择“蓝色”,我就会同时得到 1 和“熊”。
2) 有没有办法将数组映射到函数。例如,
EX = 关联数组( {"蓝色", "绿色"}, {函数A, 函数B} );
有没有办法让返回的值触发函数?我试过了,我得到的值是字符串形式的,即如果我选择“蓝色”,我会得到字符串“functionA”,而不是执行 functionA。
高级统计建模自动化和脚本数据探索与可视化Re: 有什么方法可以创建多层数组吗?不幸的是,JMP 不提供压缩()列表的功能,但您可以轻松地将其作为第一项的解决方案:
zip = Function( {list a, list b},
{zipped, i},
zipped = {};
Summation( i = 1, Min( Length( list a ), Length( list b ) ),
zipped[i] = Eval List( {list a[i], list b[i]} );
0
);
zipped
);
EX = Associative Array( {"Blue", "Green", "Red"}, zip( {1, 2, 3}, {"Bear", "Gecko", "Rabbit"} ) );
Show( ex )对于您的第二项,请参阅功能名称 Expr() - 它应该做你想做的事。但是请注意,由于 JSL 解析器的限制,您必须首先设置一个临时变量以使函数进入,然后从该临时变量调用。
zip = Function( {list a, list b},
{zipped, i},
zipped = {};
Summation( i = 1, Min( Length( list a ), Length( list b ) ),
zipped[i] = Eval List( {list a[i], list b[i]} );
0
);
zipped
);
EX = [=>];
EX["zip"] = Name Expr( zip );
func = ex["zip"];
Show( func( {1, 2, 3}, {"Bear", "Gecko", "Rabbit"} ) )Re: 有什么方法可以创建多层数组吗?另一种实现方式如下:
Names Default To Here( 1 );
// nested structure
EX = Associative Array( {"Blue", "Green", "Red"}, {{1, "Bear"}, {2, , "Gecko"}, {3, "Rabbit"}} );
Show( EX["Blue"] );
// Function example
myadd = Function( {op1, op2},
op1 + op2
);
mymult = Function( {op1, op2},
op1 * op2
);
func_aa = Associative Array( {"add", "mult"}, {myadd, mymult} );
myfunc = func_aa["add"];
Show( myfunc( 1, 2 ) );