0

私は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....

ここに応募しようと思ってmatchいたのですが、どうしたらいいのかわかりませんでした。シンプルさとパフォーマンスの両方の点でより効率的にする方法はありますか?

4

1 に答える 1

1

シンプル?

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

私はあなたが意味したと思います:

def f(a: Any) = a match {
case x: Array[Int] => Arrays.toString(x)
case x: Array[Double] => Arrays.toString(x)
}
于 2013-06-22T06:09:09.273 に答える