Versuchen, Darlehen Muster mit Typ Parameter zu verlängern und den nächsten Fehler bekommen. Sieht aus wie nur ein Syntaxfehler. Ich vermute, dass dies eine Curry-Beschränkung ist? und Rückgabetyp muss irgendwie in meinem Fall zur Verfügung gestellt werden. Danke!scala # erweitern Darlehen Muster mit Typ Parameter: Problem
import java.io._
//def withPrintWriter(file: File)(op: PrintWriter => Unit) {
def withPrintWriter[T: Numeric](file: File)(implicit count: Numeric[T])(op: PrintWriter => Unit) {
import count._
val writer = new PrintWriter(file)
try {
for(x <- 0 to count.toInt())
{
op(writer)
}
} finally {
writer.close()
}
}
val file = new File("date.txt")
withPrintWriter[Int](file)(5){
//withPrintWriter(file){
writer => writer.println(new java.util.Date)
}
Fehler: c: \ Sources \ scala \ main.scala: 101: Fehler:. '=' Erwartet, aber '(' gefunden def withPrintWriter [T: Ziffern] (Datei: File) (implizite Anzahl: Numerisch [T]) ( op: PrintWriter => Einheit) { ^ c: \ Quellen \ scala \ main.scala: 115: Fehler: illegaler Start des einfachen Ausdrucks val file = neue Datei ("date. txt ") ^
Die Parameterliste mit 'implizit' muss die letzte sein, und mit' T: Numerisch' wird der implizite Parameter nicht benötigt. Entweder 'def withPrintWriter [T] (Datei: Datei) (op: PrintWriter => Unit) (implizite Zählung: Numerisch [T]): Einheit' oder 'def mitDruckersteller [T: Numerisch] (Datei: Datei) (op: PrintWriter => Unit): Unit '(mit' val count = implizit [Numeric [T]] 'im fun body. – cchantep
Danke für den Tipp. Ich habe Probleme mit der Funktionssignatur gelöst: withPrintWriter [T: Numeric] (Datei : Datei) (op: PrintWriter => Unit) (implizite Anzahl: T): Unit, aber beim Aufruf dieser Funktion tritt ein Problem auf: \t val file = neue Datei ("date.txt") \t val count: Int = 5 \t withPrintWriter [Int] (Datei) (writer => writer.println (new java.util.Date)) (Anzahl) Fehler: Nicht genug Argumente zur Verfügung gestellt! :( – Pavel
'implizite Anzahl: T' wie kein Sinn gibt – cchantep