Page Commits | Page Additions | Page Deletions |
---|---|---|
1 | 40 | 0 |
Name | Commits | |
---|---|---|
asanzo | alfredo... | 1 |
Hash | Time | Name | Subject | |
---|---|---|---|---|
abd6dc6 | Thu Oct 5 15:11:02 2017 -0300 | GitHub | noreply... | Update herencia.md |
Ver también Orden Superior
Una consecuencia de implementar el pasaje de funciones como argumentos en lenguajes orientados a objetos# es que el envío de mensajes desde un objeto hacia otro ocurre en dos momentos:
Un objeto A envía el mensaje de orden superior a otro B, pasando por argumento un bloque de código El objeto receptor B envía un mensaje al bloque de código, que es evaluado, potencialmente, enviando mensajes a objetos que sólo A conocía.
Es decir, mientras que en la programación imperativa el código cliente llama es aquel que llama a la biblioteca, aquí es la biblioteca quien termina llamando al código cliente, lo que se conoce como Inversión de Control (IoC).
object PruebaIoC {
def sumaDeInversas(valores: List[Int]) = valores.map { 1 / _ }.sum
}
scala> PruebaIoC.sumaDeInversas( List(4,0,6) )
java.lang.ArithmeticException: / by zero
at PruebaIoC$$anonfun$sumaDeInversas$1.apply$mcII$sp(:8)
at PruebaIoC$$anonfun$sumaDeInversas$1.apply(:8)
at PruebaIoC$$anonfun$sumaDeInversas$1.apply(:8)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:194)
at scala.collection.immutable.List.map(List.scala:45)
at PruebaIoC$.sumaDeInversas(:8)
…..
evaluacion diferida mediante thunks
Latest update on October 05, 2017 by GitHub