KDB +,铸造,左操作数

时间:2014-08-09 04:23:06

标签: kdb

刚开始使用KDB +时,有一些问题难以从Q for Mortals中获得。

说,在这里 http://code.kx.com/wiki/JB:QforMortals2/casting_and_enumerations

Cast的左操作数也是原子的。         5 6 7h$42 结果:

42h
42
42j

我无法得到我们在这里所做的事情:看起来我们投了5 6 7到42,但是什么是42?它代表一种类型吗?

3 个答案:

答案 0 :(得分:5)

在这种情况下,您实际上将数字42转换为三种类型,5h / short,6h / int和7h / long,创建异构列表,键入0h。

有关类型的更多信息,请访问: http://code.kx.com/q/ref/datatypes/

以下示例应该更清楚。

q)5 6 7h$42
42h
42i
42

q)`short`int`long$42
42h
42i
42

q)(5 6 7h$42) ~ (`short`int`long$42)
1b

答案 1 :(得分:1)

要了解它,我们可以将其转换为备用版本。这将使其更易于理解。

版本1:使用左 - 左

(5 6 7h) $\: 42

输出:

42h
42i
42

每个左(\:)表示,对于左侧列表的每个值,调用右侧的转换操作。

版本2:使用每个(简单循环)

{x $ 42} each 5 6 7h

它只是循环遍历列表并在每次迭代时调用lambda函数。

答案 2 :(得分:0)

还有一种使用转换运算符(Bytes)的方式;将字符串转换为其他数据类型。使用此格式的最常见示例是在将数据从CSV加载到kdb会话时。

$

q)"HIJ"$\:string 42
(42h;42;42j)