2016-05-04 11 views
6

często widzę coś takiego w następujących Julia:Julia co oznacza bezimienna wartość w nagłówku funkcji?

convert(::Type{Point{Float64}}, ::Float64) 

Jak działa (::? A jaka jest tego terminologia?

+0

Po prostu zdałem sobie sprawę, że twoja druga argumentacja również nie ma nazwy, co wydaje mi się trochę dziwne w przypadku nagłówka funkcji. Czy to może być komunikat o błędzie? –

Odpowiedz

11

Twoja odpowiedź znajduje się pod numerem the Julia documentation for defining conversions. Zacytować (z typów włączony, aby jeszcze bardziej proste do odczytania):

Typ pierwszy argument tej metody jest singleton type, Type{Point{Float64}}, którego jedyną instancją jest Point{Float64}. Dlatego ta metoda jest wywoływana tylko wtedy, gdy pierwszy argument jest wartością typu Point{Float64}. Zwróć uwagę na składnię użytą dla pierwszego argumentu: nazwa argumentu jest pomijana przed symbolem :: i podany jest tylko typ. To jest składnia w języku Julia dla argumentu funkcji , którego typ jest określony, ale którego wartość nigdy nie jest używana w treści funkcji. W tym przykładzie, ponieważ typem jest singleton , nigdy nie będzie żadnego powodu, aby użyć jego wartości w ciele .

(Kopalnia nacisk)

napotkasz składnię foo(::SomeType) komunikaty o błędach, podczas próby wywołania funkcji z argumentami niewłaściwego typu (mimo wszystko nie można wyświetlić nazwy argumentów: a wariant, który nie istnieje). E.g:

julia> foo(x::Bool) = 3 
foo (generic function with 1 method) 

julia> foo(5) 
ERROR: `foo` has no method matching foo(::Int64)