。 _ 最も単純な形式の演算子は、リストにインデックスを付けるために使用されます。このコードの英語での使い方をどのように説明しますか?
if[x~"last";upd:{[t;x].[t;();,;r::select by sym from x]}]
この行の空のリストと :: 演算子も理解できませんが、 . クリアされます。
平易な英語では、次のように説明します: 値 r で append/comma 関数を適用することにより、すべての () インデックスでテーブル t を変更します。
まず、@ の単純なケースをいくつか考えてみましょう。
q)l:3 5 7 9
q)l:1.1 2.2 3.3
q)@[l; 0 2; +; 10]
11.1 2.2 13.3
q)d:`p`o`i!4.4 5.5 6.6
q)@[d; `p`i; -; 10]
p| -5.6
o| 5.5
i| -3.4
ご覧のとおり、フォーマットは @[dataStructure; インデックス; 関数; y引数]
インデックスの dataStructure に、指定された y 引数で関数を適用することを意味します。リスト l のインデックス 0 2 は、最上位レベルのインデックス 0 と 2 の両方を意味することに注意してください。@ を使用して深さでインデックスを作成する方法はありません。たとえば、行列 m:(1 2 3; 4 5 6; 7 8 9) が与えられた場合、この形式を使用して値 4 と 6 だけを変更するにはどうすればよいでしょうか?
q)/ @ indexes repeatedly at topmost level
q)/ definitely not what we want
q)@[m;(1;0 2);+;100]
101 102 103
104 105 106
107 108 109
q)/ **. indexes into the data structure**
q).[m;1 2;+;100]
1 2 3
4 5 106
7 8 9
q).[m;(1;0 2);+;100]
1 2 3
104 5 106
7 8 9
最後に、空のリスト () は、すべてのインデックスに適用されます:
q).[m;();+;100]
101 102 103
104 105 106
107 108 109
.
この場合、およびに適用,
することを意味します。は呼び出しごとにグローバルに更新され、 によって受信された最後の値が含まれます。ほとんどの場合、global に割り当てられます。t
r
r
sym
::
code.kx.comは.
機能を詳細に説明しています