2017-10-20 6 views
0

Je veux arrêter reduce_while quand ma fonction get {: erreur, la raison} au lieu de fauxArrêt reduce_while avec tuple

mon code est:

Enum.reduce_while(
     [1,2,3,4], 
     0, 
     fn filename, _foo -> 
     if carica() do 
      IO.puts "OK" 
      {:cont, carica()} 
     else 
      IO.puts "KO" 
      {:halt, carica()} 
     end 
     end 
    ) 

    def carica() do 
    {:error,"ERROR!!!!!"} 
    end 

Je veux une sortie comme

"KO" 
{:error,"ERROR"} 

parce que de cette façon que j'ai

OK 
OK 
OK 
OK 
{:error, "ERROR!!!!!"} 

Répondre

2

Si vous souhaitez appliquer un motif à la réponse de votre fonction, utilisez case:

case response = carica() do 
    {:error, reason} -> 
    IO.puts "KO" 
    {:halt, response} 
    _ -> 
    IO.puts "OK" 
    {:cont, response} 
end