2013-03-25 21 views
4

我想将具有不同类型的多个变量连接成一个字符串。这非常适用:调用字符串时的输出差异()

q)"select ", string[10:00:00] ," abc" 
"select 10:00:00 abc" 

当我打电话串与括号中的输出是不同的:

q)"select ", string(10:00:00) ," abc" 
"s" 
"e" 
"l" 
"e" 
"c" 
"t" 
" " 
"10:00:00" 
," " 
,"a" 
,"b" 
,"c" 

我认为在第一示例中的函数字符串被调用,类型时间的原子参数,而在第二次调用列表是在调用字符串之前创建的。

输出在第二个例子中表示什么?

回答

3

使用字符串[10:00:00],您正在输入10:00:00调用字符串函数。使用字符串(10:00:00),“abc”,您正在将joinng(10:00:00)改为“abc”,然后将结果串起来。你必须记住执行是从右向左进行的。

q)(10:00:00) ," abc" 
10:00:00 
" " 
"a" 
"b" 
"c" 
q)string (10:00:00) ," abc" 
"10:00:00" 
," " 
,"a" 
,"b" 
,"c" 
+0

为什么在两个示例中垂直打印结果?你的答案中每个命令产生的类型是什么? – 2013-03-25 19:02:26

+0

“abc”只是4个字符元素的列表。当您加入10:00:00时,您正在创建5个元素的混合列表。 'q)count(10:00:00),“abc”' (返回5)。 为了生成2列表的列表,你首先需要登记字符串。 'q)计数l:(10:00:00),登记“abc”' (返回2)。 (返回(10:00:00;“abc”)) – user1895961 2013-03-25 19:05:09

+0

ok,所以第二个命令输出中的逗号指示对string()的不同调用,每个原子类型一个(而不是一个列表就像在第一个命令结果中一样)。我对么? – 2013-03-25 19:16:18