실행하지 않고 메소드에 코드 블록을 통과 :내가 다음 코드 한
import java.io._
import com.twitter.chill.{Input, Output, ScalaKryoInstantiator}
import scala.reflect.ClassTag
object serializer {
val instantiator = new ScalaKryoInstantiator
instantiator.setRegistrationRequired(false)
val kryo = instantiator.newKryo()
def load[T](file:_=>_,name:String,cls:Class[T]):T = {
if (java.nio.file.Files.notExists(new File(name).toPath())) {
val temp = file
val baos = new FileOutputStream(name)
val output = new Output(baos, 4096)
kryo.writeObject(output, temp)
temp.asInstanceOf[T]
}
else {
println("loading from " + name)
val baos = new FileInputStream(name)
val input = new Input(baos)
kryo.readObject(input,cls)
}
}
}
나는이 방법을 사용하려는
:
val mylist = serializer.load((1 to 100000).toList,"allAdj.bin",classOf[List[Int]])
내가 그렇게 (1 to 100000).toList
때마다 실행하지 않으 serializer에 전달한 다음 처음으로 계산하여 미래에 직렬화하거나 파일에서로드하려고합니다.
문제는 코드 블록이 내 코드에서 먼저 실행된다는 것입니다. 어떻게 실행하지 않고 코드 블록을 전달할 수 있습니까?
P. 나에게 정확한 작업을 수행하는 스칼라 도구가 있습니까? 매개 변수가 전달되기 전에 평가하지 않은려면