Elixir

2014-07-06 21 views
38

yılında boruya bir anonim işlev geçmek nasıl böyle kod yazmak istiyorum.Elixir

cevap

58

Bu biraz garip bakacağız ama çalışmalıdır:

def boundary do 
    :crypto.rand_bytes(8) 
    |> Base.encode16 
    |> (&("--------FormDataBoundary" <> &1)).() 
end 
+0

Bu problemimi çözebilir. – ruisin

+3

Bu kadar garip olmasının bir sebebi var mı? Bir işlevi bir boruya aktardığımda daha çok bir değişken gibi davranıyorum (evet, ben Javascript'tenim), ama yapıyor (fn). – leitasat

+0

@leitasat Bkz. Http://stackoverflow.com/a/18023790/4376 –

7

İlgili: "anonim" fonksiyonu bir değişkene atanmış ise, şunları yapabilirsiniz kendisine şöyle boru:

def boundary do 
    add_marker = fn (s) -> 
    "--------FormDataBoundary" <> s 
    end 

    :crypto.rand_bytes(8) 
    |> Base.encode16 
    |> add_marker.() 
end