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索引