я следующий код:прохождения блока кода метода без выполнения
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
каждый раз, так Я хочу передать его в сериализатор, а затем решить сначала вычислить его и сериализовать его в будущем или загрузить его из файла.
Проблема в том, что кодовый блок работает первым в моем коде, как я могу передать блок кода без его выполнения?
P.S. Есть ли какой-нибудь инструмент scala, который делает для меня точные вещи?