Scala替换Arrays.binarySearch? [英] Scala replacement for Arrays.binarySearch?

查看:425
本文介绍了Scala替换Arrays.binarySearch?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Scala for Java的 int Arrays.binarySearch(Object []数组,对象)中是否有替换



<问题是Scala的数组不是协变的,所以我必须首先投射我的 stringArray:Array [String]

  stringArray.asInstanceOf [Array [Object]] 

有更好的解决方案吗?

解决方案

据我所知,目前还没有内置任何东西,但是你可以使用 pimp-my-library模式很容易实现这一目标。像这样:

  class ObjectArrayTools [T< ;: AnyRef](a:Array [T]){
def binarySearch(key:T)= {
java.util.Arrays.binarySearch(a.asInstanceOf [Array [AnyRef]],key)
}
}
隐式def anyrefarray_tools [ T< ;: AnyRef](a:Array [T])= new ObjectArrayTools(a)

scala>数组(a,fish,is,some,thing)。binarySearch(some)
res26:Int = 3
scala>数组(a,fish,is,some,thing)。binarySearch(bye)
res28:Int = -2

如果需要,可以将其他 java.util.Arrays 对象方法添加到同一个类中它们也是。



一般来说,我觉得习惯于总是导入你最喜欢的Scala实用程序的集合是个好主意。添加这样的功能非常容易,你可以这样做,而不是继续输入 .asInstanceOf [Array [AnyRef]] ,只需要一点努力就可以了让自己显着提高工作效率。


Is there a replacement in Scala for Java's int Arrays.binarySearch(Object[] array, object)?

The problem is that Scala's Arrays are not covariant, so I would have to cast my stringArray: Array[String] like this first:

stringArray.asInstanceOf[Array[Object]]

Is there a better solution?

解决方案

There isn't anything built in as far as I know, but you can use the pimp-my-library pattern to accomplish this fairly easily. Like so:

class ObjectArrayTools[T <: AnyRef](a: Array[T]) {                  
   def binarySearch(key: T) = {
     java.util.Arrays.binarySearch(a.asInstanceOf[Array[AnyRef]],key)
   }
}
implicit def anyrefarray_tools[T <: AnyRef](a: Array[T]) = new ObjectArrayTools(a)

scala> Array("a","fish","is","some","thing").binarySearch("some")
res26: Int = 3
scala> Array("a","fish","is","some","thing").binarySearch("bye")  
res28: Int = -2

You can add the other java.util.Arrays object methods into the same class if you need them too.

In general, I find it a good idea to get used to always importing a collection of your favorite Scala utilities. It's so easy to add functionality like this that you may as well do it in general rather than keep typing .asInstanceOf[Array[AnyRef]], and with a little effort you can make yourself significantly more productive.

这篇关于Scala替换Arrays.binarySearch?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆