一般我們會在函式的引數上加上參數,這樣可以讓函式去推論引數的型別,這樣有多種用途,其中之一當然是增進效能。

1
2
3
4
5
julia> foo(a::T) where {T} = zero(T)
foo (generic function with 1 method)

julia> foo(5)
0

那我們有沒有辦法對回傳值的型別做參數化呢?

有的,可以這樣做。

1
2
3
4
5
julia> (foo(a::T)::T) where {T} = zero(T)
foo (generic function with 1 method)

julia> foo(5)
0

一般要標記回傳值的型別,要寫在整個 function signature 的後面,也就是

1
foo(a)::Int

如果要將他標記為參數,那就需要寫成

1
(foo(a)::T) where {T}

這樣就寫出來啦!!