У меня возникли проблемы с записью функции «async», которая возвращает более одного значения с помощью «out».Возврат нескольких значений из функции async
public async void getArticle(int articleID, out string html, out string title, out string author, out string url)
{
}
Этого достаточно, чтобы вызвать ошибку. Как только ключевое слово «асинхронным» ИСТ часть заголовка функции я получаю следующее сообщение об ошибке при вызове функции:
error: Argument 2: Cannot convert from `string?' to `GLib.AsyncReadyCallback?'
это то, что вызов выглядит
getArticle(15752, out html, out title, out author, out url);
если удалить ключевое слово «async» все начинает работать снова. Возможно ли это в vala или мне нужно вернуть объект, содержащий все 4 строки, чтобы заставить его работать?
Спасибо за любую помощь заранее
наилучшими пожеланиями, Ян
ТНХ, но как я могу получить значения из этого лямбда-выражения? Что-то вроде «getArticle.begin (15752, (obj, result, html, title, author, url) => { getArticle.end (результат, out html, out title, out author, out url); }); не работает –
Обратный вызов вызывается после завершения выполнения функции, но следующая строка после вызова begin() вызывается немедленно. Невозможно получить доступ к внешним переменным, потому что значения не обязательно существуют. Посмотрите на https://wiki.gnome.org/Projects/Vala/Tutorial#Asynchronous_Methods для получения дополнительной информации. – nemequ