Reputation:
I have the code in Scala:
def method1(obj: AnyRef) = {
if (obj == null) return "null"
if (obj.isInstanceOf[Array[Boolean]]) {
return Arrays.toString(obj.asInstanceOf[Array[Boolean]])
}
if (obj.isInstanceOf[Array[Char]]) {
return Arrays.toString(obj.asInstanceOf[Array[Char]])
}
if (obj.isInstanceOf[Array[Byte]]) {
return Arrays.toString(obj.asInstanceOf[Array[Byte]])
}
if (obj.isInstanceOf[Array[Long]]) {
return Arrays.toString(obj.asInstanceOf[Array[Long]])
}
// and so on....
I was thinking about applying match
here but I couldn't realize how I would do that. Is there any way to make it more efficient in terms of both simplicity and performance?
Upvotes: 0
Views: 492
Reputation: 39587
Simplicity?
scala> def f(a: Any) = a match {
| case _: Array[Int] => "ints"
| case _: Array[Double] => "dubs"
| }
f: (a: Any)String
scala> f(Array(1,2,3))
res2: String = ints
scala> f(Array(1.1,2.2,3.3))
res3: String = dubs
I guess you meant:
def f(a: Any) = a match {
case x: Array[Int] => Arrays.toString(x)
case x: Array[Double] => Arrays.toString(x)
}
Upvotes: 1