代码之家  ›  专栏  ›  技术社区  ›  Utsav

kdb中的函数中使用-1命令有什么用

kdb
  •  0
  • Utsav  · 技术社区  · 3 年前

    我遇到了以下使用-1命令的函数

    q)whereami:{-1 "cd ~ ",system "cd";} / defining the function
    q)whereami[] / executing the function
    cd ~ /Users/utsav/kdbScripts/db 
    

    你能解释一下-1命令在这个函数中的用途吗?

    它似乎是用来在控制台中以非字符串格式提供输出的,但不确定是否是这样。

    如果我尝试不带-1和分号的函数,然后在控制台中显示输出,它会以字符串格式显示输出。

    whereami:{"cd ~ ",system "cd"}
    whereami[]
    "cd ~ /Users/utsav/kdbScripts/db"
    
    2 回复  |  直到 3 年前
        1
  •  1
  •   rianoc    3 年前

    对 -1 正在按标准输出打印

    https://code.kx.com/q/basics/handles/

    字符串显示嵌入的特殊字符:

    q)"String with some\n\t special characters"
    "String with some\n\t special characters"
    

    如果我们愿意 \n 显示为换行符和 \t 作为选项卡,我们可以打印到标准输出 -1 (或 1 -不同之处在于 -1 将在输出的末尾自动打印新行)

    q)-1 "String with some\n\t special characters"
    String with some
             special characters
    -1
    

    -1 退货 -1 在打印文本之后 ; 几乎在所有情况下,都会因为没有那么有用而抑制该返回。

    q)-1 "String with some\n\t special characters";
    String with some
             special characters
    q)
    
        2
  •  0
  •   Maurice Lim    3 年前

    -1用于将字符串(数组)结果打印到控制台。返回值将是连接句柄,而不是字符串。在没有-1的情况下,它会原样返回字符串结果。 -当您需要将信息记录到正在运行的Q进程的控制台时,1非常有用。

    这里有关于不同永久系统句柄的更多信息: https://code.kx.com/q/basics/handles/#file-stdout-stderr

    同样值得注意的是,neg句柄在打印时会添加换行符。如果您想在一行中打印/记录,可以使用1。

    推荐文章