在Julia中,確定對象是否可調用的最佳方法是什麼? (例如,有蟒蛇的callable
功能的模擬?)如何確定是否可以調用Julia對象
編輯:這是一個求之不得的東西:
f() = println("Hi")
x = [1,2,3]
a = 'A'
callable(f) # => true
callable(x) # => false
callable(a) # => false
callable(sin) # => true
在Julia中,確定對象是否可調用的最佳方法是什麼? (例如,有蟒蛇的callable
功能的模擬?)如何確定是否可以調用Julia對象
編輯:這是一個求之不得的東西:
f() = println("Hi")
x = [1,2,3]
a = 'A'
callable(f) # => true
callable(x) # => false
callable(a) # => false
callable(sin) # => true
如何:
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
這其實是一個相當Python的東西(我懷疑效率不高)。 什麼是用例?
'f(x)= 3','iscallable(f)=> false'。 –
好點,我的部分需要更多的測試... –
'x = [1]; (x :: Vector {T}){T}()= x; X(); iscallable(X)'。只是 'iscallable(f)=!isempty(方法(f))'工作嗎? –
是的,我認爲是的。 –
你在找'method_exists'嗎? – Gnimuc
@Gnimuc我剛剛嘗試過,但它沒有我正在尋找的功能。我編輯帖子以顯示我想要的內容(基本上類似於Python的'callable'),但是在Julia中可能還沒有這樣的功能(012)... – Yly
在julia中有一個'Function'類型,'typeof x)<:Function'適用於你的例子。 – Gnimuc