跳转到内容

Vala 编程/入门/开始

来自维基教科书,开放的书,为开放的世界

获取 Vala

[编辑 | 编辑源代码]

当我写这篇文章时,Vala 仍在积极开发中,最新的 Vala 编译器 "valac" 可以从 Vala 主页 下载,需要手动编译。

它也可以从您的发行版的仓库中下载。在基于 Debian 的发行版(例如:Ubuntu)上,可以使用以下命令安装它

$ sudo apt-get install valac

Hello World

[编辑 | 编辑源代码]

我们将从标准的 Hello World 程序开始

void main(string[] args) {
    print("Hello, World\n");
}
void main(string[] args) {

这是函数定义的开始。Vala 寻找一个名为 "main" 的函数或方法,该函数或方法将在程序启动时运行。

print("Hello, world!\n");

这行代码指示 Vala 执行 "print" 函数,并带有一个字符串参数 "Hello, world!\n"。在 Vala 中,这始终是您用于调用函数的语法。

最后一行只是结束 main 方法的定义。

将此文件保存为 hello.vala。假设您已安装 Vala,那么编译并执行此程序所需的全部操作是

$ valac hello.vala
$ ./hello
Hello, world!
$

valac 是 Vala 编译器,它将您的 Vala 代码转换为 C。它还可以自动化将 C 编译为机器代码的整个过程。生成的二进制文件可以直接在机器上执行。

如果给 valac -C 开关,它还会创建两个名为 hello.h 和 hello.c 的文件。如果您查看这些文件的内容,您会发现用 Vala 编程一个类等同于在 C 中完成相同的任务,但要简洁得多。您还会注意到此类是在运行系统中动态定义的。这是一个很好的例子,展示了 GNOME 平台的强大功能,但正如我之前所说,您不需要了解太多关于这方面的知识来使用 Vala。

更复杂的示例

[编辑 | 编辑源代码]

我们可以编写一个更复杂的示例,展示 Vala 的一些面向对象特性

    using GLib;
    public class Sample : GLib.Object {
        public static int main(string[] args) {
            stdout.printf("Hello, World\n");
            return 0;
        }
    }

代码行

    using GLib;

通知编译器程序将使用 GLib 命名空间。此命名空间通常默认导入,因此显式导入它是可选的。

下一行代码

    public class Sample : GLib.Object {

标识类定义的开始,定义一个名为 Sample 的类,它是来自 Glib 命名空间的 Object 类的子类。

代码行

     public static int main(string[] args) {

是公共(在类外部可见)静态(可以在没有类实例的情况下调用)函数的定义,该函数将返回一个整数。它是程序的主要入口点(运行程序时调用的第一个函数)。

     stdout.printf("Hello, World\n");

打印出 "Hello, World" 字符,并且

     return 0;

将值零返回给调用方,表示函数成功终止。如果发生错误,main 函数通常返回 1。

华夏公益教科书