Как определить, может ли объект 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, что нужно сделать (и я подозреваю, что не очень эффективно). Какой вариант использования?

Другие вопросы по тегам