2016-04-21 13 views
10

W docs Elixir, trzymają za pomocą notacji z ukośnikiem dziwne, na przykład:Co oznacza notatka w Elixir?

is_boolean/1 
IO.puts/1 
String.length/1 
is_function/2 
++/2 

Ja tylko zgadywać, ale myślę, że odnosi się liczbę operandów. Ale jeśli tak jest, dlaczego diabła nie wspomniano nigdzie w dokumentach? To nie jest tak, że jest to jakaś standardowa konwencja w IT (a przynajmniej nie taka, jaką widziałem w ciągu ponad 20 lat w branży IT).

Odpowiedz

13

Od page 2, Basic types z Wprowadzenie dokumentację:

Uwaga: Funkcje w Elixir są identyfikowane poprzez nazwę oraz liczbę argumentów (tj arity). Dlatego is_boolean/1 identyfikuje funkcję o nazwie is_boolean, która przyjmuje 1 argument. is_boolean/2 identyfikuje inną (nieistniejącą) funkcję o tej samej nazwie, ale o innym pochodzeniu.

To jest także opisana w Erlang/Elixir Syntax: A Crash Course:

Tutaj tworzymy moduł nazwany hello_module. W nim definiujemy trzy funkcje, dwie pierwsze są udostępniane innym modułom do wywoływania przez dyrektywę export u góry. Zawiera listę funkcji, z których każda jest zapisana w formacie <function name>/<arity>. Arity oznacza liczbę argumentów.

Mogę spekulować, że to sprowadza się do notatki bocznej w literaturze Elixir, ponieważ pochodzi prosto z Erlang. Chociaż wiedza Erlanga nie powinna być niezbędna do korzystania z Elixir, takie zaniedbania są częstym błędem, gdy ludzie dokumentują oprogramowanie, które pochodzi z Erlangu.

3

Zgadłeś, że to jest arytmetyczna funkcja. Powodem, dla którego jest to ważna informacja (która często nie jest zawarta w wielu językach), jest to, że funkcje o tej samej nazwie, ale inne arytmy są różnymi funkcjami - przykładem tego są Enum.reduce/2 i Enum.reduce/3. Funkcja w Elixir jest identyfikowana przez trzy rzeczy: moduł, nazwę i arity. Każda z nich jest inna i masz inną funkcję.

Notacja jest również wymieniona w Przewodniku dla początkujących: 1, 2.