2016-04-06 13 views
1

Diyaliz Cihazı Phoenix modelleri hakkında şikayet Uyarı yaniPhoenix Diyaliz Cihazı değişiklik kümesi, her zamanki şekilde ayarlanmış zaman

def changeset(model, params \\ :empty) 
... 

params modeli ile, güncelleştirilmesi için ne kadar talimat: birbirinden ayırt edebilmek için varsayılan olarak boş Boş bir haritaya eşit olan 'params' ile boş bir form gönderme.

Diyaliz Cihazı uyarıyor:

The call 'Elixir.Backend.Plot': 
changeset([email protected]::any(),'empty') will never return since it differs in the 2nd argument from the success typing arguments: 
(#{},#{}) 

Ben kaldırırsanız ': Boş' uyarısı kaybolur varsayılan param.

Normal varsayılan değişiklik kümesi işlevini korurken tip denetleyicisini karşılayan bir özellik var mı? Herhangi bir ipucu veya işaretçiler?

+0

Ayrıca bunu okumak için yararlı olabilir: http://elixir-lang.org/getting-started/typespecs-and-behaviours.html –

cevap

1

Sağladığınız türü tam olarak bilmediğimden, bununla başa çıkmak için tam olarak ne yapmanız gerektiği konusunda size tavsiyede bulunmak zor. Ancak, sanırım ikinci parametreyi boş bir harita olarak işaretlemek isterseniz, istediğiniz gibi çalışmalısınız.

Bak here. Haritalar, dialyzer tarafından özel olarak desteklenmiyor gibi görünüyor, ancak göreceli olarak basit bir çözüm gibi görünüyor. Spesifikasyonu yap #{ any() => any() } Ancak, bu mesajda belirtildiği gibi boş haritalar ile çalışıp çalışmadığı tamamen açık değildir.


DÜZENLEME:

O benim cevap olarak biraz belirsiz olduğu anlaşılmaktadır. Ben "spec" dediğimde, fonksiyonun üstesinden geldiğinizde, fonksiyonunuzu görmesini beklediğiniz diyalizciye söylemek istediğiniz ek açıklamayı kastediyorum. Örneğin:

@spec hiç belirtmemişseniz, bu sizin sorununuz olabilir. Yukarıda belirtilen durumda

, ben böyle bir şey çalışabilir öneririm:

@spec changeset(#{any() => any()}, #{any() => any()})::returntype 
def changeset(model, params \\ :empty) 
Sen ne tür değişiklik kümesi döner olmaya returnType değiştirmek isterdim ve ben söyleyemem

Ne bir posta gönderdiğini gönderdikten sonra modelin modelinin olması gerektiğini düşündüğüm bir harita. Söylediğim gibi, değişiklik yaptığınız şeyin ayrıntılarını bilmediğimden ve bir @spec belirtmediğinizden beri, söylemek benim için zor.

+0

hey, spec uygulanmadı, sadece vanilya kodu var. İdeal olarak şunu saklamak istiyorum: boş bir harita olmayan boş atom, açık bir şekilde ... – user3264325

+0

@ user3264325 Cevabımdaki düzenlemeye bak. Bu arada, gerçekten düşüşünü takdir etmeyin. –

+1

@OnorioCatenacci'nin belirttiği gibi, "changeset" için bir tür belirtim var; bu, ikinci argümanın bir harita olmasını gerektirir. Ayrıca, 'boş' atomuna izin vermek/vermek zorundaysanız, belirtim, ör. harita() | 'Empty''. – aronisstav

İlgili konular