Herhangi bir Scala türü üzerinde çalışan bir fonksiyon yazmak istiyorum. (Yani '<' seçeneğini kullanarak). Bunun için sözdizimi nedir? EsasenSipariş verilen [A] türünü kullanan bir işlev için Scala sözdizimi nedir?
scala> lessThan(1, 2)
<console>:8: error: inferred type arguments [Int] do not conform to method lessThan's type parameter bounds [T <: Ordered[T]]
lessThan(1, 2)
^
scala> import runtime._
import runtime._
scala> lessThan(new RichInt(1), new RichInt(2))
<console>:8: error: inferred type arguments [scala.runtime.RichInt] do not conform to method lessThan's type parameter bounds [T <: Ordered[T]]
lessThan(new RichInt(1), new RichInt(2))
, bunu eşdeğer istiyorum inanıyoruz: Ben ile gelip en iyi ben repl onu kullanmayı deneyin ne zaman olsa da, çalışmaz
def lessThan[T <: Ordered[T]](x: T, Y: T) = x < y
olduğunu Haskell kodu:
lessThan :: (Ord a) => a -> a -> Bool
lessThan x y = x < y
Bir Debian sisteminde scala 2.7.3 kullanıyorum.
Neyi eksik ve nerede?
Neden dolaylı olarak yönteme bir parametre olarak getirmek zorundasınız? Scala çalışma zamanı, örtülü olarak T'yi Siparişe [T] dönüştürmeyi bilirse neden örtülü bir parametre listelemem gerekir? Teşekkürler! – shj
İlk önce, herhangi bir T'yi bir Siparişe [T] dönüştürebilirsiniz. Örneğin, bir sipariş tanımlayın (Int => Int). İkincisi, dönüştürme mümkün olduğunda, çalışma zamanı nasıl dönüştürüleceğini bilmez. Bunun yerine, derleyici, çalışma zamanında dönüştürmeyi yapmak için bir işlev eklemeyi bilir. –
, ilk yöntemin kullanımdan kaldırıldığına benziyor [SI-7629] (https://issues.scala-lang.org/browse/SI-7629) –