Skip to content

Instantly share code, notes, and snippets.

@martende
Created November 10, 2017 20:53
Show Gist options
  • Save martende/a8bf0efccdb6c60ea0507eee90fa0c22 to your computer and use it in GitHub Desktop.
Save martende/a8bf0efccdb6c60ea0507eee90fa0c22 to your computer and use it in GitHub Desktop.
scala> def addToFirst[T<:Int](x:Array[T]) = x(0)
addToFirst: [T <: Int](x: Array[T])T
scala> addToFirst(Array(19))
res32: Int = 19
-------------------------------------------------------
scala> def addToFirst(x : Array[T] forSome {type T <: Integer}) = x(0)
addToFirst: (x: Array[_ <: Integer])Int
scala> addToFirst(Array(19))
res33: Int = 19
-----------------------------------
scala> def addToFirst[T<:Integer](x:Array[T]) = x(0)
addToFirst: [T <: Integer](x: Array[T])T
scala> addToFirst(Array(19))
<console>:9: error: inferred type arguments [Int] do not conform to method addToFirst's type parameter bounds [T <: Integer]
addToFirst(Array(19))
^
<console>:9: error: type mismatch;
found : Array[Int]
required: Array[T]
addToFirst(Array(19))
^
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment