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

全部博文(54)

文章存档

2013年(4)

2012年(7)

2011年(15)

2010年(28)

分类: 嵌入式

2010-12-20 01:11:42

q语言中的方法,对于于数学算法中的map。q中的方法即为替换相应的参数,一句一句的执行所有方法中定义的语句。

方法的格式
f:{[p1,p2...] e1;e2...;en} 注意方法中的语句是从左到右执行的。方法其实就是包括在{}这种的部分。所以方法可以没有名字。例如:
{x+y}[4;3]
::[1 2 3] //返回1 2 3 本身,方法::是返回参数本身。

方法是名词,因此可以成为列表的元素,或者复制给其他名词。

方法的返回值即为最后一个语句的执行结果,或者是最后一个语句的值。在方法中命名的变量也就是局部变量,其作用域控制在方法之内。而q语言中对全局变量的限制是32个。不可超过此限制。在方法中赋值全局变量的是通过:: , 例如f:{b::7;x*b}。
一旦全局变量在方法体内被重新定义后,无论如何我们都不能分为外面的全局变量,除非通过set方法。例如:
a:42
g:{a:98.6;`a set x}



方法的参数:
一个没有中括号的方法体,默认接受三个参数,分别赋值给x,y,z。所以建议不要使用x,y,z作为你的变量。
输入的参数数量极为该方法的valence。目前q的限制是8个。


作为map的方法
不难发现,从list和function看来,取同一个值现在有两种方式,但是表示法可以是一致的。例如list的下标取法和function的参数取法。因此,在q中,list和function都实现了map。
阅读(1031) | 评论(0) | 转发(0) |
0

上一篇:不常见的有用命令(2)

下一篇:kdb q介绍

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