2013-03-25 26 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