2017-12-31 7 views
1

Ich habe ein neues Projekt-Mix mit und ich versuche, alias, das ist meine einfache Code:Elixir Alias ​​gibt "ungültiges Argument für Alias, ein Kompilierung-Atom oder Alias ​​erwartet, bekam:"

defmodule MyModule do 
    alias IO.puts 
    def hello do 
    IO.puts(:world) 
    end 
end 

aber es ist mir diese Fehler zurückgegeben: invalid argument for alias, expected a compile time atom or alias, got: IO.puts()

ich habe auch versucht:

alias IO.puts, as: puts 
alias IO.puts, as: puts() 
alias IO.puts(), as: puts 

Wie kann ich lösen diesen Fehler und warum es Happening gegeben, dass ich folgende th Die Dokumentation für Alias!

+0

'alias' hilft Ihnen nur bei der Verwendung der Modulnamen zu verkürzen. –

Antwort

1

Wie in der Dokumentation angegeben, können Sie unter Alias Aliase für einen beliebigen Modulnamen einrichten. Der Zweck alias Aliasing Modulnamen. Was Sie suchen ist import, die Sie Funktionsnamen ohne ihre volle Modulnamen verwenden.

Wenn ich verstehe, was Sie richtig machen wollen, sollten Sie import IO verwenden, oder genauer gesagt import IO, only: [puts: 2].

0

Sie brauchen nicht zu alias nichts. Nur

defmodule MyModule do 
    def hello do 
    IO.puts(:world) 
    end 
end 

By the way, erwartet alias ein Modul als erstes Argument, keine Funktion.