静态私有,私有,静态公共,公共之间的区别

And*_*vas 2 haxe

有人可以解释一下Haxe语法在函数和变量方面的区别.

public var theName;
Run Code Online (Sandbox Code Playgroud)

VS

static public var theName;
Run Code Online (Sandbox Code Playgroud)

要么

static private var theName;
Run Code Online (Sandbox Code Playgroud)

VS

private var theName;
Run Code Online (Sandbox Code Playgroud)

和前面的功能一样

static private function(){} VS private function(){}

Lau*_*lor 6

有两个范围

static
Run Code Online (Sandbox Code Playgroud)

指的是班级.也就是说它可以通过类引用和名称引用.

ClassName.reference();
Run Code Online (Sandbox Code Playgroud)

将会:

class ClassName{
    static public function reference(){
        return "hello world";
    }
}
Run Code Online (Sandbox Code Playgroud)

另一个是指使用new运算符构造的类实例.

new ClassName().reference();
Run Code Online (Sandbox Code Playgroud)

这将是:

class ClassName{
    public function new(){
       //We need a constructor.
    }
    public function reference(){
        return "hello world"
    }
Run Code Online (Sandbox Code Playgroud)

另一个是选择:

public / private
Run Code Online (Sandbox Code Playgroud)

指的是类型范围之外的引用的可用性.

private function reference(){
   return "hello world";
}
Run Code Online (Sandbox Code Playgroud)

仅在this变量引用相关类实例的情况下调用时才可用.所以:this.reference()编译但new ClassName().reference()不会编译.

static private function ....
Run Code Online (Sandbox Code Playgroud)

具有类似的效果,因为它仅在类是本地的情况下可用

class MyClass{
   private static function unavailable(){
       return "available";
   }
   public static function available(){
       return something();
   }
}
class Main(){
   static public function main(){
       MyClass.unavaliable()//will not compile
       MyClass.available()//good to go.
   }
}
Run Code Online (Sandbox Code Playgroud)