跳轉到內容

Vala 程式設計/入門/程式設計風格

來自華夏公益教科書,為開放世界提供開放書籍

Hello World

[編輯 | 編輯原始碼]
using GLib;

public class Test.HelloObject : GLib.Object {

    public static void main (string[] args) {

        stdout.printf ("Hello, World");
    }
}
using GLib;

一條 using 行告訴編譯器這個檔案將引用給定名稱空間中的內容,因此允許在不給出完全限定名稱的情況下使用它們。GLib 名稱空間預設匯入,因此此行是可選的。

public class Test.HelloObject : GLib.Object {

此行標識類定義的開始。Vala 中的類在概念上與其他語言非常相似。類本質上是一種物件型別,可以建立其例項,所有例項都具有相同的屬性。類的型別的實現由 gobject 庫處理,但這些細節對於一般使用並不重要。

需要注意的是,這個類被明確描述為 GLib.Object 的子類。這是因為 Vala 允許其他型別的類,但在大多數情況下,這是你想要的型別。事實上,Vala 的一些語言特性只有在你的類繼承自 GLib 的 Object 時才允許。

此行的其他部分展示了名稱空間和完全限定名稱,但這些將在後面解釋。

public static void main (string[] args) {

這是方法定義的開始。方法是與物件型別相關聯的函式,可以在該型別的物件上執行。static 方法表示該方法可以在沒有特定例項的情況下呼叫。這個方法被稱為 main 並且具有它所具有的簽名,這意味著 Vala 會將其識別為程式的入口點。

stdout.printf ("Hello, World");

stdout 是 GLib 名稱空間中的一個物件,Vala 確保你在需要時可以訪問它。此行指示 Vala 執行 stdout 物件的 printf 方法,並以 hello 字串作為引數。在 Vala 中,這始終是你用來對物件執行方法或訪問物件資料的語法。

最後幾行只是結束方法和類的定義。

假設你已安裝 Vala,那麼編譯和執行此程式所需的步驟是

$ valac -o hello hello.vala
$ ./hello

valac 是 Vala 編譯器,它會將你的 Vala 程式碼轉換為 C 程式碼。它還可以自動完成將 C 程式碼編譯成機器程式碼的整個過程,這就是提供 -o 開關請求的理由。然後可以直接在機器上執行生成的二進位制檔案。你可能已經猜到輸出是什麼了。

如果你給 valac 提供 -C 開關,它還會建立兩個名為 hello.h 和 hello.c 的檔案。如果你檢視這些檔案的內容,你會發現用 Vala 程式設計一個類等同於用 C 做同樣的事情,但要簡潔得多。你還會注意到,這個類是在執行系統中動態定義的。這是 GNOME 平臺強大的一個很好的例子,但我之前說過,你不需要了解太多關於它的知識就能使用 Vala。

華夏公益教科書