Type Parameters and Generics
Generic First Element
Read the first value from a typed generic list.
generic-list-helper
`List[A]` is a standard generic collection. A `List[String]` can only produce strings, so the fallback value uses the same element type.
Generic First Element
ListFirstGeneric.scala
Replay: real traced execution (multi-file project)
object Main {
def main(args: Array[String]): Unit = {
val useEmpty = false
val names: List[String] = if (useEmpty) List.empty[String] else List("Ada", "Lin")
val picked = names.headOption.getOrElse("none")
val count = names.length
println("count=" + count)
println("picked=" + picked)
}
}
object Main {
def main(args: Array[String]): Unit = {
val useEmpty = true
val names: List[String] = if (useEmpty) List.empty[String] else List("Ada", "Lin")
val picked = names.headOption.getOrElse("none")
val count = names.length
println("count=" + count)
println("picked=" + picked)
}
}
useEmpty ← false, names ← List(Ada, Lin), picked ← Ada, count ← 2
1object Main {2 def main(args: Array[String]): Unit = {3 val useEmpty→ false = false //@useEmpty=true4 val names→ List(Ada, Lin): List[String] = if (useEmptyfalse) List.empty[String] else List("Ada", "Lin")5 val picked→ Ada = names.headOptionSome(Ada).getOrElse("none")6 val count→ 2 = names.length→ 278 println("count=" + count2)9 println("picked=" + pickedAda)10 }11}outputcount=2 picked=Ada
useEmpty ← true, names ← List(), picked ← none, count ← 0, names.length ← 0
1object Main {2 def main(args: Array[String]): Unit = {3 val useEmpty→ true = true4 val names→ List(): List[String] = if (useEmptytrue) List.empty[String] else List("Ada", "Lin")5 val picked→ none = names.headOptionNone.getOrElse("none")6 val count→ 0 = names.length→ 078 println("count=" + count0)9 println("picked=" + pickednone)10 }11}outputcount=0 picked=none