有沒有辦法在Vala中做如下的事情?vala需要setter/getter
public int year {
get { return this.year; }
set requires (1500 < value && value < 2050) { this.year = value; }
}
有沒有辦法在Vala中做如下的事情?vala需要setter/getter
public int year {
get { return this.year; }
set requires (1500 < value && value < 2050) { this.year = value; }
}
沒有,但「需要」是GLib.return_if_fail和GLib.return_val_if_fail真的只是語法糖,所以你可以只是做:
public int year {
get { return this.year; }
set {
GLib.return_if_fail (1500 < value && value < 2050);
this.year = value;
}
}
這是很好的知道!然而,令人失望的是,語法看起來比'require'更清晰。你在哪裏發現有關信息需要作爲GLib.return_if_fail的別名?從這兩個鏈接到GLib.return_if_fail和GLib.return_va_if_fail的Valadoc並不那麼冗長。 – flatzo
我不知道它在任何地方都有記錄,我只是非常熟悉Vala和Vala之間的轉換方式。我同意語法支持看起來更好......如果您有時間,如果您將文件功能請求Vala的bug跟蹤器(https://bugzilla.gnome.org/browse.cgi?product=vala)。 – nemequ
已經完成:https://bugzilla.gnome.org/show_bug.cgi?id = 687530 – flatzo
技術上應該是可行的,但我不知道如果語法允許它。我會做的一個解決方法是用契約定義一個私有setter函數,然後在public setter中調用它。 – Ancurio
如果語法不允許,這是一種遺憾。即使您的解決方法很乾淨,它仍然是一種解決方法。希望他們有一天會添加語法 – flatzo
好吧,你可以隨時在他們的bug追蹤器上打開一個功能請求,甚至嘗試自己實現併發送一些補丁=)Vala仍在開發中。 – Ancurio