2010-10-18 8 views
8

Para el siguiente código:¿Por qué inicio ilegal de declaración en Scala?

package FileOperations 
import java.net.URL 

object FileOperations { 
    def processWindowsPath(p: String): String { 
     "file:///" + p.replaceAll("\\", "/") 
    } 
} 

compilador da un error:

> scalac FileOperations.scala 
FileOperations.scala:6: error: illegal start of declaration 
     "file:///" + p.replaceAll("\\", "/") 

¿Por qué? ¿Como arreglar?

Respuesta

17

Falta una = de la declaración del método processWindowPath.

package FileOperations 
import java.net.URL 

object FileOperations { 
    def processWindowsPath(p: String): String = { 
     "file:///" + p.replaceAll("\\", "/") 
    } 
} 
+0

Todo Scala listados tutoriales están perdiendo de ese símbolo http://www.scala-lang.org/docu/files/ScalaTutorial.pdf – Basilevs

+1

Sí, hay una gran cantidad de código allí eso no devuelve un valor. Si el método devuelve un valor, necesita el signo =. La página 8 tiene el primer ejemplo en el documento vinculado. –

+0

¿Estas funciones devuelven valor? Si no lo hacen, se supone que no deben usar '='. –

7
object FileOperations { 
    def processWindowsPath(p: String): String = { 
    "file:///" + p.replaceAll("\\", "/") 
    } 
} 

No le falta un =. Métodos en Scala se definen de esta manera:

def methodName(arg1: Type1, arg2: Type2): ReturnType = // Method body 
Cuestiones relacionadas