2017-04-19 20 views
5

Elixir'de değişken düzlemi ele almak için en iyi uygulamalar nelerdir? Gereksiz karmaşıklığa neden olmadan & kasa aşağı eşleşiyor mu?Değişken Ardışık Elixir Fonksiyonları İçin En İyi Uygulamalar?

Python örnek:

def function_with_optional_param(param1, param2, param3=None): 
    if not param3: 
     param3 = "Whatever" 

    return 

param3 iyi Elixir'in işlenme şeklinden nasıl?

cevap

7

Bu, Elixir'de çok yaygın bir modeldir. Son argüman bir liste olmalı (Anahtar kelime listesi özel olmalıdır) ve varsayılan olarak [] olmalıdır. Elixir'de, son argüman bir anahtar kelime listesi ise, listenin etrafına [] s eklemeniz gerekmez. Örneğin:

def do_lots(arg1, arg2, opts \\ []) do 
    one = opts[:one] || :default 
    two = opts[:two] # default to nil if it's not passed 
    # do something with arg1, arg2, one, and two 
end 

def my_func do 
    arg1 
    |> do_lots(2) 
    |> do_lots(49, one: :question) 
    |> do_lots(99, two: :agent) 
    |> do_lots(-1, one: 3, two: 4) 
end 

değişken büyüklükte argümanları işlemek üzere diğer seçenek bir liste halinde hepsini geçmektir. Bu, işlev 1'i yapar ve bunları gerektiği gibi işleyebilirsiniz.

Son olarak, bir ya da tüm yayınları harita olarak geçirebilirsiniz. Bu, haritadaki desen eşlemesine izin vermenin ve haritada geçirilen tuşlara göre birden fazla işlev cümlesi oluşturmanın avantajına sahiptir.

Siparişe bağımlı oldukları için, Anahtar Kelime listesinde eşleşmeyi kolayca yumuşatamayacağınızı unutmayın.

2

iyi yolu varsayılan parametreleri kullanmaktır:

def function_with_optional_param(param1, param2, param3 \\ "Whatever") do 
    # something 
end 

Ama aslında iki işlevi oluşturur - iki parametre ile bir ve üç ile başka bir.

İlgili konular