İşlev ve nesne arasında geçiş yapmak istediğimde scalaz
|>
operatörünü kullanabilirim, böylece daha fazla okunabilirlik elde edilebilir. Size bir model işlevi getirmeme izin verin: Şimdi, her iki şekilde de yazabilirim: anahtar işlevi ve nesnesi ile scalaz '|>
"aoeu" |> length2
length2("aoeu")
Ancak bu işlevi daha genel olarak tanımlarsam, çalışmayı durdurur.
def length2(x:SeqLike[_
,_
]) = x.length * 2
length2("aoeu") // ok
"aoeu" |> length2 // doesn't work
Derleyici neden bunu anlayamıyor?
String
'dan,
SeqLike
özelliğindeki bazı sınıf karıştırmalarına kesinlikle örtük bir dönüşüm vardır.
Zor. İlk başta düşündüm çünkü bir seferde sadece bir örtüye sahip olabilirsiniz ama şimdi bir yerde gizli bir varyans sorunu da var gibi görünmektedir… – Debilski
@Debilski, scalaz'da nerede? | Kendi kimliğimi tanımlamaya çalıştım, bence “tek bir örtülü kural” onu uygulamamayı engelliyordu: “aoeu”, “|>” yöntemi ile sınıfa ve sonra tekrar “SeqLike” 'e dönüştürülmelidir. – huynhjl
Hata mesajını göster. Herkesin Scalaz'ın hazır bulunmadığı, ancak hata mesajları genellikle neyin yanlış gittiğini açıklar. –