Мова програмування vala

Hello world!
Мова програмування Vala

Розгляд будь-якої мови програмування традиційно належить починати з найпростішої програми «Hello world». Напишемо нашу першу програму на Vala не в традиційному командному варіанті, а з використанням GUI на GTK +.
using Gtk;
int main (string [] args) {Gtk.init (ref args);
var window = new Window (WindowType.TOPLEVEL) - window.title = "Hello world!" -
window.set_default_size (300, 50) -
window.position = WindowPosition.center;
window.destroy.connect (Gtk.main_quit);
var button = new Button.with_label ( "Click me!") -
button.clicked.connect ((source) = gt; {source.label = "Thank you";
});
window.add (button) -
window.show_all () -
Gtk.main () -
return 0;



}

Скомпілювати цю програму можна командою:
$ Valac --pkg gtk + -2.0 hello.vala

Тут все дуже просто і якщо компіляція не проходить, значить з ним щось не так. Перевірити його працездатність зможуть тут (https://bimar.ru/) досвідчені майстри

Ключ --pkg вказує, які пакунки є необхідними при компіляції і компонування. Приємна новина полягає в тому, що при правильній інсталяції компілятор сам розбирається зі шляхами і директивами. Виконання будь-якої програми починається в Vala з функції main, що приймає масив рядків, що містить параметри командного рядка. Рядки є самостійним типом даних і автоматично підтримують Unicode.




Перше, що потрібно зробити, - форматувати GTK + за допомогою рядка:
Gtk.init (ref args) -

Директива ref вказує, що параметр передається по посиланню, а не за значенням. Далі починається звична для GTK + «кухня» зі створенням вікон і віджетів. По суті Vala ніяк не змінює звичайний порядок роботи з GTK + крім надання об`єктно-орієнтованого синтаксису, тому очікувати магічного спрощення роботи з GUI не потрібно - все «темні кути» GTK + нікуди не зникають. Створимо головне вікно (об`єкт Window) з використанням стандартних констант GTK +:
var window = new Window (WindowType.TOPLEVEL) -

Створюється враження, що змінна window створюється без вказівки типу. Насправді, тут спрацьовує механізм неявній типізації для локальної змінної (type inference) по правій частині оператора присвоювання. Працює він так само, як в D, але обмежений тільки локальними змінними. Можна було б оголосити тип змінної явно:
// Явна типізація в Vala
Window window = new Window (WindowType.TOPLEVEL);

Для складних типів, особливо узагальнених, неявна типізація стає просто рятівною. Порівняйте, наприклад, ці два оголошення в Vala:
MyFoogt; foo = new MyFoo
MyBargt; () -
var foo = new MyFoo

повертає об`єкт, який є функцією однієї змінної (source). Саме таку сигнатуру очікує сигнал clicked. Тип змінної source вказувати не потрібно, тому що він визначається компілятором автоматично і є посиланням на об`єкт, який викликав сигнал, т. е. кнопкою.

Нарешті, ми додаємо кнопку в вікно, показуємо вміст вікна функцією show_all () і входимо в цикл обробки подій GTK + за допомогою Gtk.main (). Вихід з цього циклу здійснюється тільки після закриття вікна програми.

Нетривіальний момент в прикладі полягає у відсутності операторів delete після динамічного створення об`єктів оператором new. Vala - мова з автоматичним управлінням пам`яттю, проте, на відміну від Java, є можливість «ручного управління» за допомогою покажчиків, якщо це необхідно. Автоматичне управління пам`яттю побудовано за методом підрахунку посилань, а не за допомогою «збирача сміття».

особливості синтаксису

Повністю описати синтаксис мови в короткій статті неможливо, але на щастя, це і не потрібно. Всі конструкції мови Vala будуть зрозумілі будь-якому програмісту знайомому з С ++, С # або Java. У той же час деякі особливості мови заслуговують згадки.

ІНШЕ

Shotwell: інтерфейс фото

Shotwell: інтерфейс

Відео: Shotwell 0.7 - Ubuntu Maverick Moviesінтерфейс Вікно Shotwell після імпорту Робота з новим менеджером…

Ultimate ++: перша програма фото

Ultimate ++: перша програма

Відео: Уроки C # (C sharp) | # 3 - Перша програма на C # Перейдемо до реального прикладу. Напишемо просту марну…

» » Мова програмування vala