有什麼辦法可以建立多層數組嗎?你好,
1)我正在嘗試建立一個多層數組,其中一個鍵可以獲得多個層。有什麼辦法可以做到這一點嗎?例如,我的 jsl 應該如下所示:
EX = 關聯數組( {"藍", "綠", "紅"}, {1, 2, 3}, {"熊", "壁虎", "兔子"} );
我試圖得到它,以便如果我選擇“藍色”,我會同時得到 1 和“熊”。
2)有沒有辦法讓陣列映射到函數。例如,
EX = 關聯數組( {"藍色", "綠色"}, {函數A, 函數B} );
有沒有辦法讓回傳值觸發函數?我已經嘗試過了,我得到的值是字串形式的,即如果我選擇“Blue”,我會得到字串“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 ) );