2016-04-21 5 views
0

Ich versuche diese Übung aus diesem Buch zu machen, von dem ich lerne.Wie leiten Sie (Ketten-) Funktionen mit Callbacks richtig?

Das Ziel ist es, eine Reihe von Wörtern aus einer zufälligen TXT-Datei (die geliefert wird) zu lesen und dann alle Wörter zu finden, die mit D beginnen, diese Wörter groß schreiben und nur diese zurückgeben. Das ist, was ich bisher habe:

Ich fühle mich wie in der Theorie sollte dies gut funktionieren, aber es scheint nicht zu. Jede Information wäre fantastisch, danke.

Ich versuche Filter so, wie ich es in der Elixir Docs zu verwenden:

filter(t, (element -> as_boolean(term))) :: list 

Das ist mein Fehler ist:

listTest.exs:1: warning: redefining module ReadFile 

== Compilation error on file listTest.exs == 
** (CompileError) listTest.exs:3: unhandled operator -> 
    (stdlib) lists.erl:1353: :lists.mapfoldl/3 
    (stdlib) lists.erl:1354: :lists.mapfoldl/3 

** (exit) shutdown: 1 
    (elixir) lib/kernel/parallel_compiler.ex:202: Kernel.ParallelCompiler.handle_failure/5 
    (elixir) lib/kernel/parallel_compiler.ex:185: Kernel.ParallelCompiler.wait_for_messages/8 
    (elixir) lib/kernel/parallel_compiler.ex:55: Kernel.ParallelCompiler.spawn_compilers/3 
     (iex) lib/iex/helpers.ex:168: IEx.Helpers.c/2 

Antwort

2

Sie haben einige Fehler in der Funktionssyntax, die Recht würde man dies:

contents 
|> Enum.filter(fn(word) -> String.starts_with?(word, "D") end) 
|> Enum.map(fn(word) -> String.upcase(word) end) 

auch, bitte, lesen the getting started guide .

Verwandte Themen