5
İçin Başvuru kullanmak aşağıdaki doğrulama mantığı: Scalaz belgelerine görenasıl Fonksiyon Uygulama
def one(a : String) : Validation[String, Int] =
if (a == "one") {
Success(1)
} else {
Failure("Not One")
}
def two(a : String) : Validation[String, Int] =
if (a == "two") {
Success(2)
} else {
Failure("Not Two")
}
def validate (a : String) = (one(a) |@| two(a)){_ + _}
:
/**
* DSL for constructing Applicative expressions.
*
* `(f1 |@| f2 |@| ... |@| fn)((v1, v2, ... vn) => ...)` is an alternative to `Apply[F].applyN(f1, f2, ..., fn)((v1, v2, ... vn) => ...)`
*
* `(f1 |@| f2 |@| ... |@| fn).tupled` is an alternative to `Apply[F].applyN(f1, f2, ..., fn)(TupleN.apply _)`
*
* Warning: each call to `|@|` leads to an allocation of wrapper object. For performance sensitive code, consider using
* [[scalaz.Apply]]`#applyN` directly.
*/
nasıl doğrulamak işlevini apply2
kullanmak dönüştürebilirim?
Evet bunu Arity biri bir tür yapıcı alıyordu uygula fark ama Doğrulama iki kişi gerekir, çünkü tökezledi: Bize türü tanımı köri sağlayan tipi lambda adı verilen özel bir numara gerekir. –
Evet .. Bu genel bir oyun, gerçekten çirkin ama şu an için böyle yapıldı. Temel olarak, bir parametreyi alan bir ad-hoc tipi (lambda tipi) yaratırsınız. Bu, 'Uygula' nın istediği, iki türle yeni bir tür oluşturan ve sonra "bu türü uygula" yı # ile uygular. yeni yarattığımız şeyi al. İki türü String ve Int olarak kodladığımı unutmayın. Kontrol edin, örn. [this] (http://like-a-boss.net/2014/09/27/type-lambda-in-scala.html) veya [bu] (https://blog.adilakhter.com/2015/02/18/uygulamak-scalas tipi lambda /). – slouc