我对qore 0.8.12中的可变范围感到困惑。似乎函数参数的作用域与全局变量的作用域相同-可能吗,或者我做错了什么?

3.1.0 kveton@kvela ~$ cat zk1.q
%new-style
%strict-args

sub fun(string v)
{
    print("xxx\n");
}

string v = "zzz";
3.1.0 kveton@kvela ~$ qore zk1.q
unhandled QORE System exception thrown in TID 1 at 2017-01-30 08:10:32.612137 Mon +01:00 (CET) at zk1.q:4
PARSE-ERROR: local variable 'v' was already declared in the same block at zk1.q:9

感谢您的解释...

最佳答案

顶级范围内的局部变量实际上是全局线程局部变量。

看:

  • https://docs.qore.org/current/lang/html/variables.html#local_variables
  • https://docs.qore.org/current/lang/html/threading.html#threading_and_variables

  • 这样就不可能使用与参数变量相同的变量名(这是在所定义的函数,方法或闭包范围内的局部变量)。

    关于unix - qore中的函数参数范围是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41930677/

    10-11 20:05