2016-09-27 2 views
1

Je me dis, pour être un vrai expert de la KDB, je devrais apprendre K, n'est-ce pas? Je peux donc écrire des fonctions rapides et comprendre comment les choses fonctionnent réellement, etc.Utilisation du K à l'intérieur de KDB +/Q et branchement conditionnel spécifiquement

J'ai trouvé cette définition de factorielle qui ne fonctionne pas, même si c'était un exemple dans K-Lite Ref Manual. Je l'ai modifié pour utiliser if plutôt que conditionnel (:) et cela fonctionne.

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

Est-ce que la syntaxe ": [a; b; c]" a disparu? Qu'est-ce qui l'a remplacé?

Existe-t-il une feuille de triche pour la version actuelle de K sous-jacente à KDB + dont je peux obtenir une copie?

S'il vous plaît?

Je suis en fait assez de tomber en amour avec K. Obtenez une charge de Quicksort en K:

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

OMG! Donne d'autres langues semblent trop longues!

Répondre

2

Essayez d'utiliser $ (si-else) au lieu de:

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

Voici une feuille de triche pour l'apprentissage q/KDB +. https://github.com/KxSystems/kdb/blob/master/d/primer.htm

IMO il sera beaucoup plus facile de commencer à apprendre q car il y a beaucoup plus de ressources disponibles. i.e. code.kx

Exemple:

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

+0

Cela semble fonctionner à l'intérieur des fonctions K et, pour autant que je peux dire. MERCI! – JSLover

+0

Oui, l'opérateur du dollar est natif de k. Rappelez-vous que q, dans sa forme la plus simple, est une couche supplémentaire de fonctions écrites en k. Jetez un oeil à $ QHOME/q.k :) –

+2

@JSLover: veuillez noter que les fonctions d'écriture dans k ne les rendront pas plus rapides que les implémentations _equivalent_ q. –