Vala 什么时候需要 `new`
when is `new` required in Vala
我想知道
之间的区别
DateTime t = new DateTime.now_local();
和
File f = File.new_for_path(...);
为什么前者需要 new
而后者发出 new
的错误?
new
关键字只能与定义构造函数的 class 一起使用。
只有具体的 class 可以定义构造函数。它对于 GObjects 是可选的,因为它们总是可以用 GLib.Object.new
.
实例化
在这种特定情况下,GLib.File
被定义为抽象 class 而 File.new_for_path
的行为更像是一个工厂,它将 select 基于协议的实现(即 file://
、ssh://
、...)和 return 其对应的实例。
GLib.DateTime
class 不继承自 GLib.Object
,因此需要显式构造函数进行实例化。
对于结构,new
可以使用,尽管它会发出警告。
我想知道
之间的区别DateTime t = new DateTime.now_local();
和
File f = File.new_for_path(...);
为什么前者需要 new
而后者发出 new
的错误?
new
关键字只能与定义构造函数的 class 一起使用。
只有具体的 class 可以定义构造函数。它对于 GObjects 是可选的,因为它们总是可以用 GLib.Object.new
.
在这种特定情况下,GLib.File
被定义为抽象 class 而 File.new_for_path
的行为更像是一个工厂,它将 select 基于协议的实现(即 file://
、ssh://
、...)和 return 其对应的实例。
GLib.DateTime
class 不继承自 GLib.Object
,因此需要显式构造函数进行实例化。
对于结构,new
可以使用,尽管它会发出警告。