Предположим, у нас есть функция, например, сокращение, которая принимает обратный вызов, например, объединитель. Если у меня есть пример функции обратного вызова exampleReducer, я бы хотел избежать необходимости писать тип обратного вызова вручную и использовать вместо этого тип exampleReducer.
В C++ я могу получить тип exampleReducer, используя decltype:
#include
#include
using namespace std;;
float exampleReducer(float x, float y) {
return x+y;
}
auto reduce(decltype(exampleReducer) reducer, vector numbers) {
auto result = numbers[0];
for (auto x: numbers)
result = reducer(result, x);
return result;
};
int main() {
std::cout x+y;
const reduce = (reducer: typeof exampleReducer, numbers: number[]) => {
let result = numbers[0];
numbers.forEach((n) => { result = reducer(result, n);})
return result
}
console.log(reduce((x, y) => x/y, [1,2,3,4,5]))
Я знаю, что в Python 3.11 к модулю typing будет добавлена функция show_type, которая уже доступна в typing-extensions, но в документации указано :
Когда средство проверки статического типа обнаруживает вызов этой функции, оно выдает диагностику с указанием типа аргумента.
Похоже, что средства проверки типов могут определить тип, но только для целей отладки...
Существует ли эквивалент Python, который позволил бы использовать тип exampleReducer как аннотацию типа?
def exampleReducer(x: float, y: float):
return x+y;
def reduce(reducer: ???what goes here??? exampleReducer, numbers: list[float]):
result = numbers[0];
for n in numbers:
result = reducer(result, n)
return result
print(reduce(lambda x, y: x/y, [1,2,3,4,5]))
Подробнее здесь: https://stackoverflow.com/questions/739 ... c-decltype
Существует ли на Python эквивалент Typescript `typeof` или C++ `decltype`? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Отражение GetField() не работает из GetType(), только typeof(T) [дубликат]
Anonymous » » в форуме C# - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-