[英]Pine Script v5 compiler report "undeclared identifier"
像这样的代码:
//@version=5
indicator("My script")
x = if open > close
var a = 10
var b = 20
a := 20
b := 30
(a+b)[1]
plot(x)
(a+b)[1] 中的编译器报告“a”和“b”是未声明的标识符:
line 11: Undeclared identifier 'a';
line 11: Undeclared identifier 'b'
但是如果将 expr '(a+b)[1]' 修改为 'a+b',则在块中声明了 'a' 和 'b',编译成功。 编译器是如何工作的?
就我而言,编译器在第 11 行(在else
分支中)专门用a
报告了这个问题。 在这种情况下,会出现错误,因为a
变量是在if
分支中声明的,而在else
分支中根本不存在。
为此,您需要在if/else
条件之外声明。 这是重写此代码的一种可能方法:
//@version=5
indicator("My script")
f() =>
var a = 10
var b = 20
if open > close
a := 20
b := 30
(a+b)[1]
else
a
x = f()
plot(x)
很多时候,编译器消息与问题不完全匹配,您必须猜测它试图说什么。
在这种情况下,从逻辑上讲,声明不应在“if”部分中,因为在脚本中的任何地方都可以访问变量,因此您必须在最低级别声明它们。
You can use it like (a[1]+b[1]) right in the meantime
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.