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

Pine script Pinescript-自定义方法是否内联?,pine-script,Pine Script,在试验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) /@version=4 学习(“我的剧本”) x=1 y

在试验
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)
/@version=4
学习(“我的剧本”)
x=1
y=1
函数()=>
var k=条形指数
K
如果关闭<打开
x:=函数()
y:=函数()
绘图(x)
绘图(y,颜色=颜色。绿色)


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

对同一函数的每次调用都会维护一个不同的历史记录,因此其效果类似于内联函数。usrman对此进行了解释

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

if barstate.isrealtime
    var int a = bar_index
将仅在实时条上首次执行脚本时初始化变量,因此
a
将是该条的
bar\u索引