type FilePartHandler[A] = FileInfo => Accumulator[ByteString, FilePart[A]]
Typ Stichwort in scala Datei-Upload exampe
def handleFilePartAsFile: FilePartHandler[File] = {
case FileInfo(partName, filename, contentType) =>
val perms = java.util.EnumSet.of(OWNER_READ, OWNER_WRITE)
val attr = PosixFilePermissions.asFileAttribute(perms)
val path = Files.createTempFile("multipartBody", "tempFile", attr)
val file = path.toFile
val fileSink = FileIO.toFile(file)
val accumulator = Accumulator(fileSink)
accumulator.map { case IOResult(count, status) =>
FilePart(partName, filename, contentType, file)
}(play.api.libs.concurrent.Execution.defaultContext)
}
ich den obigen Code aus WIEDG.DATEI Beispiel laden kopiert haben. Ich habe eine harte Zeit mit der Syntax type
Schlüsselwort. Wenn ich so etwas sage type mytype = Int => String
. Ich kann es wie sagen verwende unter
def method2(f:mytype) = "20"
def f(v:Int) = "hello"
method2(f)
Aber ich basierend auf, was ich verstehe, ich bin bei Totalverlust, wie die folgende Syntax wird handleFilePartAsFile
in dem Verfahren verwendet wird, und was bedeutet es auch bedeuten?
type FilePartHandler[A] = FileInfo => Accumulator[ByteString, FilePart[A]]
In Ebene Englisch bedeutet es "handleFilePartsAsFile" ist eine Methode, die eine andere Methode (ob benannt oder anonym) und die Eingabe für diese Methode ist "FileInfo" mit der Ausgabe als Akkumulator ...? Und wenn das, was ich oben geschrieben habe, korrekt ist, dann schreiben wir in dem vorliegenden Beispiel eine Methode "handleFilePartAsFile", deren Block eine anonyme Funktion ist, die die oben genannten Kriterien erfüllt, die ich geschrieben habe? – curiousengineer
Nein, es ist eine Methode, die eine Funktion (keine Methode) _returnns_ zurückgibt, und die Eingabe für diese Funktion ist 'FileInfo'. Und '{case FileInfo (...) => ...}' definiert eine solche Funktion. –
Ja, ich habe es falsch formuliert, so auf das, was Sie geschrieben haben, "handleFilePartAsFile" ist eine Methode. Diese HandleFilePartsAsFile gibt eine Funktion zurück. Es ist diese Funktion, die FileInfo als Eingabe nimmt und Akkumulator als Ausgabe zurückgibt? – curiousengineer