7

複数のディスパッチにシンボルを使用する方法があるかどうか疑問に思っていましたが、「キャッチオールメソッド」も含まれています。つまり、次のようなもの

function dispatchtest{alg<:Symbol}(T::Type{Val{alg}})
  println("This is the generic dispatch. The algorithm is $alg")
end
function dispatchtest(T::Type{Val{:Euler}})
  println("This is for the Euler algorithm!")
end

2 番目のものは機能し、マニュアルの内容と一致します。最初のものをどのように機能させるのか疑問に思っています。

4

1 に答える 1

8

次の方法で実行できます。

julia> function dispatchtest{alg}(::Type{Val{alg}})
           println("This is the generic dispatch. The algorithm is $alg")
       end
dispatchtest (generic function with 1 method)

julia> dispatchtest(alg::Symbol) = dispatchtest(Val{alg})
dispatchtest (generic function with 2 methods)

julia> function dispatchtest(::Type{Val{:Euler}})
           println("This is for the Euler algorithm!")
       end
dispatchtest (generic function with 3 methods)

julia> dispatchtest(:Foo)
This is the generic dispatch. The algorithm is Foo

julia> dispatchtest(:Euler)
This is for the Euler algorithm!
于 2016-09-04T08:34:03.047 に答える