Он передается так же, как и любой другой аргумент, который передается в вызове функции, прямо здесь:
RunAsync([this] { InitializeWebView(kDefaultOption); });
Это замыкание, которое вызывает InitializeWebView()
с параметром. В этом нет абсолютно ничего необычного.
Но то, что передается RunAsync()
, - это лямбда, которая не требует аргументов. Который отлично конвертируется в std::function<void ()>
. Эта лямбда не принимает аргументов и возвращает void
, что делает ее конвертируемой в std::function<void ()>
. И когда он вызывается, он вызывает InitializeWebView()
с параметром.
Это очень похоже (но не совсем логически эквивалентно лямбда-выражению в коде из-за захвата `this) в:
void call_initialize()
{
InitializeWebView(kDefaultOption);
}
// ....
RunAsync(call_initialize);
Вот и все, что нужно.