2017-12-15 4 views
0

Zum Beispiel in diesem typespec für Modul-String:Was bedeutet Eigenschaft .t auf Elixier?

@spec validate(String.t) :: {:atom} 

Was ist das? und wie kann ich es über iex testen?

** (UndefinedFunctionError) function String.t/0 is undefined or private 
    (elixir) String.t() 

aktualisieren

Sieht aus wie einige Leute die Notwendigkeit der Prüfung nicht sehen, die die Art von etwas über iex

Für den Rest von uns, die Elixier lernen wir es tun können, wie dies:

iex(8)> t String 
@type t() :: binary() 
@type codepoint() :: t() 
@type grapheme() :: t() 
@type pattern() :: t() | [t()] | :binary.cp() 
iex(9)> t(String) 
@type t() :: binary() 
@type codepoint() :: t() 
@type grapheme() :: t() 
@type pattern() :: t() | [t()] | :binary.cp() 

auch für die .t

Wenn Sie auf den Typ "string" verweisen möchten (den, der von Funktionen im String-Modul bearbeitet wurde), verwenden Sie stattdessen den String.t/0-Typ.

Quelle https://hexdocs.pm/elixir/typespecs.html#notes

+1

Es ist ein Typ, Sie müssen hier nichts testen. – JustMichael

+2

https://hexdocs.pm/elixir/String.html#t:t/0 – mudasobwa

Antwort

1

Es ist keine Eigenschaft. Grundsätzlich ist es ein Verweis auf den "String" -Typ, der von Funktionen aus dem Elixir String-Modul verwendet wird. Um es vollständig zu verstehen, lesen Sie bitte mehr here.

+0

Dies ist der richtige Link zum Dokument https://hexdocs.pm/elixir/typespecs.html#notes Wenn Sie verweisen möchten zum Typ "string" (der String, der von Funktionen im String-Modul bearbeitet wird), verwenden Sie stattdessen den String.t/0-Typ. – lapinkoira

+0

Ein Link führt zum anderen - beide haben Recht. Ist es nicht das, wonach du gesucht hast? – Kociamber