Genel bilgi parametrelerine işlev hazırlayıcılarına izin vermek için bir sözdizimi var mı? Ben gibi bir yöntemde bunu sarabilirdiniz biliyorum:Scala'da, jenerik tip parametreleri * işlev * tanımlarıyla kullanılabilir mi?
def createLongStringFunction[T](): (T) => Boolean = {
(obj: T) => obj.toString.length > 7
}
ama sonra her tip T yöntemi çağırmak gerek ve yeni bir fonksiyon elde sonunda. Dil başvurusunu inceledim ve işlevinin sözdizimi sözdiziminin derleyici tarafından genel giriş türlerine sahip bir Functionn nesnesinin bir örneğine çevrildiğini görürsem, derleyici sihirbazının şu anda bu parametreleri gerçekleştirdiği anlaşılıyor. oluşturma. Aslında, "Functionn unbound'un tip parametrelerinden birini veya daha fazlasını bırakmamı sağlayan herhangi bir sözdizimi bulamadım." Tercih edeceğim şey şu satırlar boyunca bir şeydir:
Böyle bir şey var mı? Ya da, bu durumda, genişletilen yöntemin genel parametreleri olduğunda bir eta-genişletme işlevinin açık türü nedir?
Bu tamamen uyuşturulmuş ve yararsız bir örnektir. Tabi ki fonksiyonunu kullanabilirim.
sayesinde Ben durumun olmasından korktum. Yöntemi genişletmek bu şekilde daha karmaşık durumlar için kapıyı açar. Ara metot olmadan bunu yapmanın bir yolunu bulamadığım halde, atamadaki tip ipucu şu şekilde şaşırtıcı bir şekilde taşıyabilir: ' def doStuff [T, U] (moreStuff: T => U) (obj: T) = dahaStuff (obj) val timeAndAHalf = doStuff [İnt, Çift] (_ * 1.5) _' 'def doStuff [T, U] değerinden oldukça fazla keser (moreStuff: T => U) (obj: T): U = dahaStuff (obj) val zamanıAndAHalf: Int => Çift = (num: Int) => doStuff [Int, Double] (sayı => sayı * 1.5) (sayı) ' – erich2k8
Ne tip parametrelerinin işlev nesnelerine uygulanamaması nedenidir? –