Указатель функции Cython с вводом объединенного типа: недопустимое использование объединенных типов, тип не может быть с ⇐ Python
-
Anonymous
Указатель функции Cython с вводом объединенного типа: недопустимое использование объединенных типов, тип не может быть с
В отличие от предыдущего поста, здесь я работаю со всеми функциями cdef. Если я буду работать с указателем функции ввода Fused_type, это вызовет сообщение «Недопустимое использование объединенных типов, тип не может быть специализированным». Напротив, указатель на функцию со встроенным типом работает хорошо. Почему?
import cython # поднять ошибку ctypedef Fused Fused_Type: плавать интервал ctypedef Fused_type (* _func_pointer) (fused_type[:]) cdef Fused_type base_func(fused_type[:] arg1): вернуть аргумент1[0] cdef Fused_type c_entry(fused_type[:] arg1, _func_pointer func): вернуть функцию (arg1) cdef Fused_type base_wrapper(fused_type[:] arg1): вернуть c_entry(arg1, base_func) """ ------- """ # работает cdef int base_func(int[:] arg1): вернуть аргумент1[0] cdef int c_entry(int[:] arg1, _func_pointer func): вернуть функцию (arg1) cdef int base_wrapper(int[:] arg1): вернуть c_entry(arg1, base_func)
В отличие от предыдущего поста, здесь я работаю со всеми функциями cdef. Если я буду работать с указателем функции ввода Fused_type, это вызовет сообщение «Недопустимое использование объединенных типов, тип не может быть специализированным». Напротив, указатель на функцию со встроенным типом работает хорошо. Почему?
import cython # поднять ошибку ctypedef Fused Fused_Type: плавать интервал ctypedef Fused_type (* _func_pointer) (fused_type[:]) cdef Fused_type base_func(fused_type[:] arg1): вернуть аргумент1[0] cdef Fused_type c_entry(fused_type[:] arg1, _func_pointer func): вернуть функцию (arg1) cdef Fused_type base_wrapper(fused_type[:] arg1): вернуть c_entry(arg1, base_func) """ ------- """ # работает cdef int base_func(int[:] arg1): вернуть аргумент1[0] cdef int c_entry(int[:] arg1, _func_pointer func): вернуть функцию (arg1) cdef int base_wrapper(int[:] arg1): вернуть c_entry(arg1, base_func)
Мобильная версия