Как определить, может ли объект Julia вызываться
В Юлии, как лучше всего определить, может ли объект вызываться? (Например, есть ли аналог питона callable
работать?)
РЕДАКТИРОВАТЬ: Вот что можно пожелать:
f() = println("Hi")
x = [1,2,3]
a = 'A'
callable(f) # => true
callable(x) # => false
callable(a) # => false
callable(sin) # => true
2 ответа
iscallable(f) = !isempty(methods(f))
Этот метод используется в Base (см. Здесь).
Но подумайте о переосмыслении вашей проблемы. Такая отправка будет, вероятно, медленной.
Как насчет этого:
julia> function iscallable(f)
try
f()
return true
catch MethodError
return false
end
end
iscallable (generic function with 1 method)
julia> f() = 3
f (generic function with 1 method)
julia> iscallable(f)
true
julia> x = [1,2]
2-element Array{Int64,1}:
1
2
julia> iscallable(x)
false
Это на самом деле довольно Pythonic, что нужно сделать (и я подозреваю, что не очень эффективно). Какой вариант использования?