Pine Script函数返回值为何输出3而非1?执行逻辑疑问
Pine Script自定义函数返回值不符合预期的成因
你观察到的现象是Pine Script的固有语法规则导致的,和通用编程语言的默认函数行为有明确差异:
- 无显式
return声明时,Pine Script函数只会返回函数体中最后一个有效表达式的计算结果。你写的returnFunction()里,1、2、3是三行独立的无副作用表达式,前两个表达式计算完成后没有被存储、也没有触发返回逻辑,会被运行时直接丢弃,只有最后一行的3会被作为函数返回值传递出去。 - 通用编程语言中“遇到返回语句就提前终止”的逻辑在Pine Script中同样生效,但前提是你必须显式书写
return关键字,裸写的字面量、表达式不会被识别为返回语句,自然不会触发函数终止。
如果要实现你预期的“执行到第一行就返回1、后续代码不执行”的效果,需要给第一个返回值加上显式return声明,修正后的代码如下:
//@version=5 indicator("Test functions", overlay = true) returnFunction() => return 1 2 3 label.new(bar_index, high, str.tostring(returnFunction()))
运行上述修正代码后,标签就会显示预期的返回值1。
提示:Pine Script是面向K线时序计算设计的领域特定语言,执行模型、语法规则和Python、JavaScript这类通用编程语言存在不少差异,不要直接套用通用语言的编程直觉编写代码,遇到行为不符合预期时优先核对官方语法规则。
内容的提问来源于stack exchange,提问作者Micke
相关产品推荐
相关产品推荐

