, Int java int, Ordered [Int]. , java , Ordered [T].
:
:
<: <%.
def vectorToTreeMap[A <% Ordered[A]](elements: Vector[A]): TreeMap[A, Int] =
elements.foldLeft(new TreeMap[A, Int]())((tm, e) => tm.updated(e, tm.getOrElse(e, 0) + 1))
A <: [A] , vectorToTreeMap , Ordered [A], Int.
A <% Ordered [A] , vectorToTreeMap , " ", Ordered [A], Int, , Int Ordered [Int ]:
scala> implicitly[Int => Ordered[Int]]
res7: Int => Ordered[Int] = <function1>
, - ( ) A, , A.
, , TreeMap , , , .
def vectorToTreeMap[A](elements: Vector[A])(implicit ordering:Ordering[A]): TreeMap[A, Int] =
elements.foldLeft(new TreeMap[A, Int]())((tm, e) => tm.updated(e, tm.getOrElse(e, 0) + 1))
, Ordering [A] java, String, scala REPL:
scala> implicitly[Ordering[Int]]
res8: Ordering[Int] = scala.math.Ordering$Int$@5b748182
Scala . , Tuple, , scala :
scala> implicitly[Ordering[(Int, Int)]]
res9: Ordering[(Int, Int)] = scala.math.Ordering$$anon$11@66d51003
. , ints, , , , int, , val.
scala. :
def vectorToTreeMap[A : Ordering](elements: Vector[A]): TreeMap[A, Int] = ???
def vectorToTreeMap[A](elements: Vector[A])(implicit ordering:Ordering[A]): TreeMap[A, Int] = ???
, , vectorToTreeMap , , . vectorToTreeMap Ordering [A] Ordering [A].
:
, "".
, , . , . , caseInsensitiveOrdering Sting. String Ordered, .
scala, TreeMap.
: , :
scala> case class Person(name:String, surname:String)
defined class Person
scala> implicitly[Ordering[Person]]
<console>:10: error: No implicit Ordering defined for Person.
implicitly[Ordering[Person]]
^
. :
scala> :paste
case class Person(name:String, surname:String)
object Person {
val nameSurnameOrdering : Ordering[Person] = Ordering.by(p => (p.name, p.surname))
implicit def defaultOrdering = nameSurnameOrdering
}
defined class Person
defined module Person
scala> implicitly[Ordering[Person]]
res1: Ordering[Person] = scala.math.Ordering$$anon$9@50148190