Beruflich Dokumente
Kultur Dokumente
Declarati va y Funcional
Dinmi ca
Paralel a
enericidad
Garantiza que el tipo T tenga que se IComparable Y por tanto este cdigo es estticamente correcto
Definir una clase que implemente la interface IComparer por cada criterio de comparacin !!!
elegados
Definir una clase que implemente la interface IComparer por cada criterio de comparacin !!! Estamos ante clases que su nico objetivo es ofrecer un mtodo con una funcionalidad
Me representa a una funcin que recibe dos parmetros de tipo T1 y T2 y devuelve un resultado de tipo TResult
elegados
Mtodo que recibe como parmetros un array y una funcin que recibe dos parmetros del mismo tipo que el array y que devuelve un int Una tal funcin se usar como comparador
mo lo usamos?
No tiene que haber un mtodo definido, este se construye en el lugar (delegados annimos)
presiones Lambda
No hay que poner el tipo el compilador lo puede inferir Son el mismo tipo que el tipo del array, en este caso Email
10
bool
Transformar los elementos de la fuente mediante una funcin que recibe un T y devuelve un R
DEMO
Clculo repetido de la funcin Para cualquier problema no siempre tiene por qu haber una solucin iterativa tan sencilla
Cul puede ser una solucin para no repetir algo y aprovechar la simplicidad de la solucin recursiva? 12
emorizacin
Dnde ponemos el array?
Solucin imperativa Cmo podemos reutilizar este patrn de memorizacin sin tener que reproducirlo imperativamente dentro de cada funcin? 13
cional Memoization
Funcional Una funcin que recibe una funcin y devuelve otra funcin Funcional Memoization Una funcin que recibe una funcin y devuelve una funcin similar pero con la capacidad de memorizar los clculos que hace para no volverlos a repetir! Recibe una funcin de T en R Retorna una funcin de T en R Qu aspiramos poder hacer?
14
cional Memoization
Cul es la estructura de datos ms usada para memorizar? Retorna una funcin de la misma signatura de la que recibe Una funcin que recibe un T
y devuelve un R Usa un diccionario para memorizar El funcional devuelto conserva las entidades creadas en su scope (CLAUSURA). En este caso un diccionario para cada funcin que se memorice)
15
cional Memoization
Problema? Memoriza una llamada externa al mismo parmetro pero no dentro de la propia recursin
CP Reflexione sobre el por qu y sobre cmo podra lograrse una mejor alternativa
16
os Funcionales
Va acumulando la aplicacin de f a todos los elementos del
e
Cmo sumar todos los elementos de la lista?
Implemente Aggregate Algunos lenguajes tienen este tipo de funcionales como primitivas, incluso con sintaxis propia Disee e implemente otros funcionales que crea sean de utilidad
17
ados y Covarianza
creaPoligono = creaRectangulo;
gados y Coarianza
Indica que este parmetro genrico se va a usar para el tipo de retorno de un mtodo
Una funcin que se espera que devuelva un polgono puede ser sustituida por una funcin que devuelve un rectngulo
dos y Contravarianza
MayorPoligono = MayorTriangulo;?
dos y Contravarianza
MayorTriang = MayorPolig; ?
Dentro del mtodo el tipo T1 solo puede ser usado como el tipo de parmetros de entrada del mtodo
dos y Contravarianza
Definicin de mtodo que dados dos polgonos devuelve el menor rectngulo que los contiene
Definicin de mtodo que dados dos rectngulos devuelve el menor rectngulo que los contiene (posible implementacin ms fcil y eficiente) BoundingDePoligonos = BoundingDeRectangulos; ?
Por qu no da error?
New features in C# 4.0, Mads Torgersen MSDN, video PDC, Object Oriented Software Construction, Bertrand Meyer Covariance and Contravariance in C#, Eric Lippert's Blog