Я пытаюсь выполнить основную задачу: перечислить содержимое папки в массив строк или List<string>
или что-то итеративное. Но это кажется настолько сложным, и я не могу найти то, что мне нужно в API.Список содержимого папки с Vala
Мой текущий код:
using GLib;
using Gtk;
class Demo.HelloWorld : GLib.Object {
public static int main(string[] args) {
File docsets = File.new_for_path (Environment.get_home_dir() +
"/.local/share/zeal/docsets");
try {
GDir* t = g_dir_open(Environment.get_home_dir());
} catch (FileError e) {
stderr.printf ("%s\n", e.message);
}
stdout.printf(Environment.get_home_dir()+"\n");
stdout.printf("Hello, World\n");
return 0;
}
}
Я компиляции с: valac main.vala --pkg gtk+-3.0
и я получил следующее сообщение об ошибке:
main.vala:27.6-27.14: error: The type name `GLib.GDir' could not be found
GLib.GDir* t = g_dir_open(Environment.get_home_dir());
Я попытался, глядя на https://developer.gnome.org/glib/2.42/glib-File-Utilities.html и http://valadoc.org/#!api=glib-2.0/GLib.Log.FILE, это выглядело довольно просто на начало.
Благодарим за помощь.
Для более глобального контекста: я хочу попробовать подключиться к плагину Synapse (launchpad.net/synapse-project).
Вы нашли это в своем ответе, но, возможно, это полезно для кого-то другого: классы GLib в коде C/C++ имеют префикс 'G'. В Вале вам нужно отбросить этот префикс, например. 'GDir' становится' GLib.Dir' (или просто 'Dir', поскольку GLib ist всегда используется по умолчанию). –
Аналогично 'g_dir_open()' становится 'Dir.open()', также вы не должны использовать указатели в Vala. Вместо этого Vala использует ссылки с автоматическим подсчетом ссылок. Кроме того, вы можете использовать вывод типа, чтобы ваша строка была короче написана как «var t = Dir.open (...);' –
Спасибо за тысячи раз за эти советы !!! Вала выглядит действительно хорошим выбором, в то время как пространства имен выглядят несколько запутанными: D – Kwaadpepper