2010-07-15 21 views
14

¿Cómo se hace que una función protegida en una clase sea accesible para todas las clases del paquete en Scala?Funciones protegidas en Scala

+2

Cuando la unidad de probar la funcionalidad interna de un hecho clase el clasificador protegido por paquetes es realmente útil (no quiere que ese método complejo sea público, pero le gustaría ejecutar una prueba unitaria) – monzonj

Respuesta

39

Usted puede hacer

protected[packagename] def foo() {...} 
+3

Sí, pero llamemos así a lo que es: un método. Las funciones en Scala son algo completamente diferente. –

+3

¿No debería ser 'private [packagename]'? –

+0

Entonces esta es la respuesta que estaba buscando, por favor márquela como tal. –

11

Si prestamos atención a la distinción entre la función y el método, podemos definir un objeto derivado de Function:

protected[packagename] object fn extends (Int=>Int) { 
    def apply(n: Int) = 2*n 
} 
Cuestiones relacionadas