Ben yazarın açıkça belirlenmiş yetkinlik için aldığım Joshua Suereth, kitaba göre «Derinliği Scala» okuyorum. Ben 3. sayfadaki ve yazım hataları demet ve tutarsız biçimlendirme (Tamam, ben bu hataların toleranslı oldum) çok basit bir senaryoyu çözmeye fonksiyonel yaklaşımla ilgili aşağıdaki örnekte tökezledi peşindeyim. dikkatli açıkça mavi baskı (hiçbir somut yöntem tanımlanmıştır ...) ... «yakalamak» açıkça başka yazım hatası o ... Cat
ayrılmış bir kelime ve Bird
örneklenebilir değildir sağlanan olduğunu var sağlanan ileScala API 2.10. *: Function2.andTk ne oldu?
trait Cat
trait Bird
trait Catch
trait FullTummy
def catch(hunter: Cat, prey: Bird): Cat with Catch
def eat(consumer: Cat with Catch): Cat with FullTummy
val story = (catch _) andThen (eat _)
story(new Cat, new Bird)
ben ...
örnek aldı... ama başka bir kaza sonucu hata bu kadar İşletmesi örnek kalitesiz rağmen, ben işlev kompozisyon açısından tanımlanır «hikayesi» val (andThen
compose
arasında «ters ilişkisel» olduğunu) düşünün olamaz edilir Örneğin çekirdeği.
Etkili bir şekilde örnek, yerel sürüm Scala (2.10.1) üzerinde derlenmeyecek ve mevcut en son sürümde (2.10.2) belgelenmemiştir.
trait Function2ex[-T1, -T2, +R] extends Function2[T1, T2, R] {
def andThen[A](g: R => A): (T1, T2) => A = { (x, y) => g(apply(x, y)) }
}
buldum API kısa inceleme sonrasında andThen
sadece function1 tarafından ve sözde kayboldu desteklendiğini: (takip) faydasının ve uygulaması başarmak kolay olduğunu hiç şüphe yoktur
İşlevsiz2 dan Function22 çok sorun şudur:
1'den büyük Arity işlevi * ile andThen
ve compose
desteklemek için geçerli deyim nedir? O örnek burada hiç oluyor ama nerede anlamıyorum
Eğer tupled hakkında ayrıntılı lütfen edebilirsiniz. (Ziyade tek parametre "tüketici" den tuple kabul etmez yemek çünkü ben onu başka türlü çalışmaz biliyorum, ama neden biz tuplea var mıydı) neden kullanma gerekti? ve tam Biz '(' yakalamak \ '_ \)' Bir 'andThen' yöntemine sahip olmayan bir' Function2', çünkü bunu tuplea zorunda – igx
ne yapıyor. Ve dönüş tipi ('Catch' ile Cat ')' yemek 'argüman tipine uymak zorundadır. –
, bu yüzden "andThen" işlevini elde etmek için bunu Function1'e dönüştürmek için tupled kullanıyoruz, doğru mu? – igx