Esto es algo que encuentro con frecuencia, pero no conozco la manera elegante de hacerlo. Tengo una colección de objetos Foo. Foo tiene una barra de método() que puede devolver un objeto nulo o Bar. Quiero escanear la colección, llamar al método bar() de cada objeto y detenerme en el primero devolviendo una referencia real y devolver esa referencia desde el escaneo.mejor idioma de scala para encontrar y devolver
Obviamente:
foos.find (.! _ Bar = null) .bar
hace el truco, pero pide #bar dos veces.
¿Hay alguna diferencia entre esto y el uso de una proyección? – IttayD
La memorización de Stream [T] es la diferencia 'val mapped = foos.elements.map (_. Bar); mapped.find (_! = null); mapped.find (_! = null) 'devuelve' Some (bar say 4) 'y' None' donde 'val mapped = foos.projection.map (_. bar); mapped.find (_! = null); mapped.find (_! = null) 'devuelve dos veces' Some (bar say 4) '. –
'foos.view' en Scala 2.8 devuelve lo mismo que' foos.projection', pero evalúa los elementos dos veces (no hace memoria). –