KDB 中的变量作用域

Variable scoping in KDB

getQuotes: {[sym;start;end]
  url: f[sym;start;end]
  {some_test} {request.quotes[url;x`next_page_token]} \ request.quotes[url;0b] 
  }

我有一个 while 循环。我遇到的问题是 url 超出了 while lambda:

的范围
'url
  [2]  alpaca.q:47: .alpaca.getQuotes@:{request.quotes[url;x`next_page_token]}
                                                                             
                                                       ^

我已经读到 post 这是设计使然: ,但它并没有真正给我一个解决方案。

我试过用一元包起来,但没用。

我用 url:: 使 url 全局化,这个 有效 ,但不是很干净。

是否有将 url 传递到 lambda 的首选模式?

您可以将变量作为参数传递到内部 lambda 表达式中:

getQuotes: {[sym;start;end]
  url: f[sym;start;end]
  {some_test} {[x;url]request.quotes[url;x`next_page_token]}[;url] \ request.quotes[url;0b] 
  }