Сейчас я изучаю Tensorflow Serving и пытаюсь создать Custom Servable.
Итак, я прочитал код о hashmap_source_adaptor (это пример кода в Tensorflow Serving).
Но есть некоторый код, я не могу понять.
HashmapSourceAdapter::HashmapSourceAdapter(
const HashmapSourceAdapterConfig& config)
: SimpleLoaderSourceAdapter<StoragePath, Hashmap>(
[config](const StoragePath& path, std::unique_ptr<Hashmap>* hashmap) {
return LoadHashmapFromFile(path, config.format(), hashmap);
},
// Decline to supply a resource footprint estimate.
SimpleLoaderSourceAdapter<StoragePath,
Hashmap>::EstimateNoResources()) {}
HashmapSourceAdapter::~HashmapSourceAdapter() { Detach(); }
Что означает [config] в строке 4?
Дайте мне идею или подсказку, чтобы искать об этом.
Код источника находится по этой ссылке. и я не могу понять строку 70.
https://github.com/tensorflow/serving/blob/master/tensorflow_serving/servables/hashmap/hashmap_source_adapter.cc#L70
Благодарю.
[config]
список захвата для лямбда-выражения Поскольку не указано иное, он фиксирует config
по значению. Это копирует все config
относится и делает его видимым внутри лямбды.
Захватив config
необходимо, потому что код в лямбда-выражении использует config
:
вернуть LoadHashmapFromFile (путь, конфиг.format (), hashmap);
За config
чтобы означать что-то внутри лямбда-выражения, оно должно быть захвачено. В частности, лямбда-выражение — это, по сути, сокращение для создания класса. Все в списке захвата (которое фактически используется внутри лямбда-выражения) становится параметром, который передается в ctor для этого класса (а тело лямбда-выражения становится телом перегрузки operator()()
для этого класса).
Других решений пока нет …