我試圖分析下面的一段Scala代碼:斯卡拉:選項,有的和ArrowAssoc操作
import java.nio.file._
import scala.Some
abstract class MyCustomDirectoryIterator[T](path:Path,someNumber:Int, anotherNum:Int) extends Iterator[T] {
def getCustomIterator(myPath:Path):Option[(DirectoryStream[Path],
Iterator[Path])] = try {
//we get the directory stream
val str = Files.newDirectoryStream(myPath)
//then we get the iterator out of the stream
val iter = str.iterator()
Some((str -> iter))
} catch {
case de:DirectoryIteratorException =>
printstacktrace(de.getMessage)
None
}
如何interpert這段代碼:Some((str -> iter))
是的,它返回類型的值:
Option[(DirectoryStream[Path], Iterator[Path])]
- >運算符是,盡我的理解,ArrowAssoc從scala.Predef包。
implicit final class ArrowAssoc[A] extends AnyVal
但我還是不明白什麼 - >東西是做給我類型的返回值:
Option[(DirectoryStream[Path], Iterator[Path])]
Scala的專家在這裏能投入更多的光對此有何看法?有沒有辦法以更可讀的方式編寫「一些(..)」的東西?不過,我理解Some的作用。
我不認爲有任何更好的表達方式,除了使用逗號而不是' - >'。爲什麼地球上是'scala.Some'被導入?過度的IDE? – 2015-03-31 21:54:50