Привет Я хотел бы написать общий метод check_range()
, который получает в качестве параметра raw_type
(vin
или vout
или il
и т.д.) и в соответствии с raw_type
вызовы соответствующих методов calc_vin()
или calc_vout()
и т.д. Я пытаюсь использовать отражение get_method()
для него:Specman reflection: Как использовать get_method()?
type raw_t : [vin, vout, il, iin];
...
extend my_unit {
check_range(raw_type : raw_t) : uint {
var meth_name : string = appendf("calc_%s", raw_type);
var meth : rf_method = me.get_method(meth_name); //This line causes an error
// ....
};
calc_vout() is {
// Calculates Vout
};
};
Когда я вызываю метод check_range()
я получаю ошибку :
Error: 'me' (of type my_unit_u) does not have 'get_method()' method.
Как я могу подойти к методу calc_vout()
с использованием отражения get_method()
? Очень ценю вашу помощь
Это похоже на неправильное использование отражения. Вы должны использовать оператор 'case' для вызова соответствующего метода на основе входного аргумента. –