3

_ 最も単純な形式の演算子は、リストにインデックスを付けるために使用されます。このコードの英語での使い方をどのように説明しますか?

if[x~"last";upd:{[t;x].[t;();,;r::select by sym from x]}]

この行の空のリストと :: 演算子も理解できませんが、 . クリアされます。

4

2 に答える 2

7

平易な英語では、次のように説明します: 値 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
于 2013-03-30T10:31:34.137 に答える
1

.この場合、およびに適用,することを意味します。は呼び出しごとにグローバルに更新され、 によって受信された最後の値が含まれます。ほとんどの場合、global に割り当てられます。trrsym::

code.kx.com.機能を詳細に説明しています

于 2013-03-29T16:22:54.310 に答える