Scala

2011-08-04 21 views
7

'de belirsiz örtülü dönüşümleri çözme Aşağıda belirtilenlerden herhangi birini Yararlı olarak kullanmayı seçebilirsiniz. Biliyorum ki bu özel işlev ismini sadece yazabilirim, ama merak ediyorum, istediğim türü belirleyebilir miyim diye merak ediyorum. AyrıcaJavaIterable'nin asJavaCollection'a öncelik vermemesinin nedenini merak ediyorum. asJavaCollection dikkate alınmayacaktır böyleceScala

scala> import scala.collection.JavaConversions._ 
import scala.collection.JavaConversions._ 

scala> Iterable(0,1):java.lang.Iterable[Int] 
<console>:11: error: type mismatch; 
found : Iterable[Int] 
required: java.lang.Iterable[Int] 
Note that implicit conversions are not applicable because they are ambiguous: 
both method asJavaIterable in object JavaConversions of type [A](i: Iterable[A])java.lang.Iterable[A] 
and method asJavaCollection in object JavaConversions of type [A](i: Iterable[A])java.util.Collection[A] 
are possible conversion functions from Iterable[Int] to java.lang.Iterable[Int] 
     Iterable(0,1):java.lang.Iterable[Int] 
      ^

cevap

12

Bu ithalat kapsamını sınırlamak mümkündür:

import scala.collection.JavaConversions.{asJavaCollection=>_,_} 

Bu diyor, "asJavaCollection hariç JavaConversions ithalatı tüm üyeleri,". Ancak, JavaConverters ürününü içe aktarma ve dönüşümlerinizi açık hale getirme tercihini düşünüyorum.

import scala.collection.JavaConverters._ 

Iterable(0,1).asJava