2017-07-13 2 views
1

ich eine Funktion mit zwei Standardparameter habenFunktion arity als Ergebnis der Standardparameter in Elixier Dialysator machen beschweren

defp foo(bar, baz, qux \\ "", garply \\ nil)

ich zwei Verwendungen haben, liefert man nur die ersten beiden Parameter, die andere alle 4. Dialyzer beschwert sich, dass Function foo/3 will never be called. Ich nehme an, dies ist, weil es privat ist und die beiden Standardeinstellungen unroll_nodes/2, unroll_nodes/3 und unroll_nodes/4 zulassen. Ich könnte angeblich die Standardeinstellungen fallen lassen und sie in der gegenwärtigen foo/2 Invokation liefern, aber es scheint albern gerade Dialysegerät zu besänftigen. Gibt es eine Möglichkeit, dies in der Spezifikation anzugeben?

Antwort

1

Sie können die Dialysator Warnung mit dem @dialyzer Attribut unterdrücken:

@dialyzer {:no_unused, [foo: 3]} 

Alle möglichen Optionen werden here aufgeführt.

+0

bedeutet das, dass es keine bessere Möglichkeit gibt, die Typespec anzugeben? es ist wirklich eine falsche Warnung? oder ist das ein Codesignal? – kolosy

+1

Ich vermute, das ist eine Kombination von Elixir, die immer alle Zwischenköpfe erzeugt. Eine Alternative könnte darin bestehen, die Voreinstellungen "manuell" mit einem separaten Funktionsaufruf zu definieren. Dann hätten Sie nur die Versionen/2 und/4 ohne die Version/3. – michalmuskala

Verwandte Themen