有人可以解释一下Haxe语法在函数和变量方面的区别。
public var theName;
vs
static public var theName;
或
static private var theName;
vs
private var theName;
和ex。
的功能相同 static private function(){}
vs private function(){}
答案 0 :(得分:6)
有两个范围
static
指的是班级。也就是说,它可以通过类引用和名称引用。
ClassName.reference();
将是:
class ClassName{
static public function reference(){
return "hello world";
}
}
另一个是指使用new运算符构造的类实例。
new ClassName().reference();
这将是:
class ClassName{
public function new(){
//We need a constructor.
}
public function reference(){
return "hello world"
}
另一个是选择:
public / private
指的是类型范围之外的引用的可用性。
private function reference(){
return "hello world";
}
只有在this
变量引用相关类实例的情况下调用时才可用。所以:this.reference()
会编译,但new ClassName().reference()
不会。
static private function ....
具有类似的效果,因为它仅在类是本地
的情况下可用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.
}
}
答案 1 :(得分:2)
static:该字段属于Class本身,而不属于此类的实例。静态标识符可以直接在类本身中使用。在类之外,它必须与类名一起使用(例如:my.pack.MyClass.name)。