有人可以解释一下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(){}
有两个范围
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)