2011-04-07 13 views

Respuesta

9

Una consideración el rendimiento es que los métodos de tipo estructural se llaman a través de la reflexión, que es mucho más lento en la JVM que una llamada a un método regular. Ver this answer and comments para obtener información detallada.

9

he descubierto que cuando necesito tipos estructurales, es casi siempre debido a una biblioteca que quería utilizar no está diseñado adecuadamente (por ejemplo, falta superclases en casos como StringBuilder/StringBuffer).

Entonces, si quieres usar tipo estructural Por otras razones, podría tratarse de un problema de diseño, que sería más serio que las consideraciones de configuración o rendimiento. El sistema de tipos de Scala es poderoso, y usar tipos estructurales es un poco como "rendirse" para hacerlo bien con medios "normales". Así que si usted tiene un código que parece "requerir" tipos estructurales, tratar de analizar por qué es de esa manera, y tal vez pedir a la comunidad si se puede mejorar (https://codereview.stackexchange.com/ parece un buen lugar para esto), si usted está atascado.

Por cierto, todo el mundo tiende a abusar de una característica que sólo "asimiló", por ejemplo, los principiantes coinciden como locos una vez que obtienen el concepto, incluso si hay formas mejores (por ejemplo, en el caso de las funciones de opciones como map, flatMap, foreach ...).

+1

Si se olvida de una superclase o interfaz común, no puede ser resuelto a través de esta conversión implícita (proxeneta mi biblioteca)? – ziggystar

Cuestiones relacionadas