2016-09-27 37 views
1

我認爲,要成爲真正的KDB專家,我應該學習K,對吧?所以我可以寫出一些快速功能,並理解事情的實際工作等等。使用K內部的KDB +/Q和條件分支

我發現這個階乘的定義不起作用,即使它是K-Lite參考手冊中的一個例子。

fac1: {:[x>1; x * fac[x-1]; 1]} 

我修改它使用,而不是條件(:),它的工作原理。

fac2: {if[x>1; :x * fac[x-1]]; 1} 

「:[a; b; c]」語法消失了嗎?什麼取代了它?

是否有K底層KDB +的實際版本的備忘單,我可以獲得副本?

請?

我愛竟是那樣的下降與K.獲取K中快速排序的負載:

https://rosettacode.org/wiki/Sorting_algorithms/Quicksort#K

OMG!使其他語言看起來如此漫長!

回答

2

嘗試使用$(if-else語句),而不是:

http://code.kx.com/q/ref/control/#cond

這裏是學習的Q/KDB +備忘單。 https://github.com/KxSystems/kdb/blob/master/d/primer.htm

海事組織它會更容易開始學習q因爲有更多的可用資源。即code.kx

例子:

fac:{$[x>1; x * fac[x-1]; 1]}

+0

這似乎給K個功能內工作爲好,據我可以告訴。謝謝! – JSLover

+0

是的,美元運營商本來就是來自k。請記住,q是最簡單的形式,是用k表示的另一層函數。 查看$ QHOME/q.k :) –

+2

@JSLover:請注意,使用k編寫函數不會使它們比_equivalent_ q實現更快。 –