2016-09-27 35 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实现更快。 –