Pinescript - 自定义方法是否内联?

Pinescript - are custom methods inlined?

我在试验 var 和自定义方法时发现了一些有趣的行为:

//@version=4
study("My Script")

x = 1
y = 1

function() =>
    var k = bar_index
    k

if close < open
    x := function()

y := function()

plot(x)
plot(y, color=color.green)

通过设置 var k = bar_index,它在调用时将 k 的值设置为第一个柱索引。它在 y := function() 中首先被调用,这导致 k 被设置为 0。但是,当 x := function() 再次调用时,k 的值似乎为 9,但 x 的值仍然为 0(如图中所示),表明函数是内联的。这是真的吗,因为文档中没有提到这一点?

对同一函数的每次调用都会保留不同的历史记录,因此效果类似于内联函数。在 usrman.

中有解释 here

至于var,它只在第一次执行时初始化变量。虽然在大多数情况下这将出现在数据集的第一个柱上,但如果在执行受限的本地块中使用声明语句,它只会在该语句在该块中首次执行时初始化变量,例如:

if barstate.isrealtime
    var int a = bar_index

只会在实时柱上第一次执行脚本时初始化变量,因此 a 将是该柱的 bar_index