Aliasing a type
like you are doing is a very bad idea.
For defaults stick to defaults.
object Test {
val Ran = new scala.util.Random
case class Student(name: String, id: String, nat: String)
case class StExam(name: String, id: String)
case class StMark(id: String, mark: Int)
object StMark {
def apply(tp: (String, Int)): StMark = StMark(tp._1, tp._2)
}
case class Result(name: String, mark: Int, rank: Int)
def marks(ls: List[String]): List[StMark] = {
val r = new scala.util.Random
val k = 1 to 20 map { _ => r.nextInt(100) } toList
val f = ls.zip(k).toList map { (x: (String, Int)) => StMark(x) }
f.sortBy(_.mark)
}
}
You are missing something, your toList
operations are not performed in place.
f.toList // returns a new object, it is not updating f itself.
// it's useless in your current code.