我试图找出scala方式来实现我将在java中一直做的事情.在java中我会让snarf_image(下面)在满足if条件时返回null,否则返回bArray.scala的方法是什么?这段代码甚至没有编译,我无法找到正确的方法 - 我确信我的想法是关闭的.
def snarf_image ( sUrl : String ) : Array[Byte] = { val bis = new BufferedInputStream(new URL(sUrl.replace(" ", "%20")).openStream()) val bArray = Stream.continually(bis.read).takeWhile(-1 !=).map(_.toByte).toArray val img = ImageProcessing.ArrayToImage(bArray) if ( img.getHeight < 100 || img.getWidth < 100 ) { Empty } else { bArray } }
为了记录我使用电梯(因此使用空)但我很确定这更像是斯卡拉问题.
有时可以Option
用于要返回null的情况(在Java中).
我没有编译它,但它应该工作.
def snarf_image ( sUrl : String ) : Option[Array[Byte]] = { val bis = new BufferedInputStream(new URL(sUrl.replace(" ", "%20")).openStream()) val bArray = Stream.continually(bis.read).takeWhile(-1 !=).map(_.toByte).toArray val img = ImageProcessing.ArrayToImage(bArray) if ( img.getHeight < 100 || img.getWidth < 100 ) { None } else { Some(bArray) } }