Chinaunix首页 | 论坛 | 博客
  • 博客访问: 262797
  • 博文数量: 54
  • 博客积分: 1761
  • 博客等级: 上尉
  • 技术积分: 585
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-17 23:30
文章分类

全部博文(54)

文章存档

2013年(4)

2012年(7)

2011年(15)

2010年(28)

分类: 嵌入式

2010-12-22 22:45:57

q和其他语言一样,内置了许多常见的操作符和函数。

操作符和函数


有关内置函数的介绍,我们放在后面blog介绍。这次主要介绍各类常见的操作符,以及这些操作符在不同数据类型上的效果。
操作符实质上和函数是一个概念,只不过操作符通常写在表达式中间而函数通常卸载前面。大部分情况下,系统内置的操作符都能够被写成函数的形式。例如
3+2  =》 5
也可以写成
+[3;2] => 5.  虽然看着比较怪,但我们必须认识到这个存在的意义。
另外对语言学习不深的人可能还有一个误解。所有的操作符都是符号,而函数才是字母组成。完全不然。例如xexp,neg等都是操作符。

操作符优先级
在优先级这个概念上,q语言和其他语言相去甚远。在q中不存在优先级的概念。任何一个表达式都是自右往左进行解析。任何需要改变这一执行效果的方法只能依赖括号。括号内的表达式总是被先执行,所以要合理使用这点。
之所以没有优先级,有这么几个原因:
减少程序员对优先级的判断
减少误差(语言解析的误差)

~ 比较符
该操作的两端接受两个实体,返回一个bool值。主要是比较两个实体的数据类型和值大小。两者都满足后,返回1b,否则0b。

关系运算
关系运算往往应用在Atom上。一般情况下也返回bool值。

= 和<>

相等运算,是测量两个值的大小,允许值不同类,但要求类间可转化。因此symbol不可和char比较。

not 取反
该运算总是将值与0进行比较。

>  <  >=   <= 比较

基本数学运算
+ - * %
唯一要注意的是,q中除法不再使用/,因为/已经被用作注释。另外数学运算也要求运算的两侧都是Atom。

最大值|和最小值&

数学公式sqrt, exp, log, xexp, xlog

这些数学公式的输入可以是整数等各种数字类型,但返回值永远都是float。

还有这些数学公式mod, signum, reciprocal, floor, ceiling 和abs
其中reciprocal 返回参数的倒数。
signum返回数字的符号0或-1或1.
mod可以处理浮点数,5.2 mod 1.1 = 0.8






阅读(3182) | 评论(0) | 转发(0) |
0

上一篇:kdb q介绍

下一篇:kdb/q学习笔记 - 原子类型

给主人留下些什么吧!~~