Согласно документам Swig и замечательному объяснению в SWIG in typemap works, but argout does not от @Flexo, карта-образ argout
превращает ссылочные аргументы в возвращаемые значения в Python.Возвращаемые аргументы в SWIG/Python
У меня есть сценарий, в котором я передаю dict
, который затем преобразуется в unordered_map
в typemap(in)
, который затем заполняется в C++ lib. Поступая через код, я вижу, что отображение изменилось после того, как оно вернулось с C++, поэтому я задаюсь вопросом, почему нет возможности просто преобразовать unordered_map
обратно на место в dict
, который был передан. Или это возможно сейчас, и я просто что-то пропускаю?
Спасибо!
Спасибо, много, m7thon! Вторая последняя пуля была темой, которую я отсутствовал. Из приведенных примеров Swig я думал, что ваша последняя пуля была единственным возможным способом передачи данных (с использованием возвращаемых значений). –
@wr m7thon - это точка с этим ответом. Единственное, на что вы должны обратить внимание и сделать свой собственный ум, - это то, на что разработчик Python (т. Е. Пользователь ваших привязок) ожидает, что это будет поведение. В идеале вы хотите взять наименее запутанный маршрут. Для меня, как правило, в Python, чтобы сделать входные аргументы неизменяемыми, потому что в отличие от C++ вы не можете легко выводить (например) через const/not reference, каково будет поведение. Это в значительной степени оставляет возможность вернуть значение вместо этого в качестве опции, что часто имеет смысл, потому что return val не используется для указания успеха/неудачи в хорошо разработанных интерфейсах. – Flexo