logo logo
Inicio arrow Foros...
Sunday, 04 de January de 2009
 
 
English English  Español Español  
Próximos Eventos
10.Jun. 2009

IWANN 2009
Salamanca, Spain
11.Jun. 2009

Toward a Science of Consciousness
Hong Kong, China
15.Jun. 2009

International Workshop on Machine Consciousness
Hong Kong, China
15.Jun. 2009

The 8th IEEE International Conference on Cognitive Informatics
Hong Kong, China
22.Jun. 2009

IWINAC 2009
Santiago de Compostela, Spain
Etiquetas
Análisis Artificial Científicos Conciencia Consciencia Consciencia Artificial Conscientes Consciousness Developer Documentación Documentation Español Howto Investigación Publicaciones Reviews Robotics Robots Robótica Servicios Spanish Studio VPL artificial
Destacados
Conscious-Robots.com Forum  


Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
¿Qué es eso de yield return, yield break? - 2007/12/21 14:26 Ésta es una pregunta frecuente que se suele hacer cuando se ve por primera vez código escrito en C# (C Sharp) para Robotics Studio. La respuesta está en los iteradores.

Mirad este artículo:

http://www.conscious-robots.com/es/robotics-studio/robotics-studio-howto-c-mo-hacer-/how-to-use-the- new-features-of.html
Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
Re:¿Qué es eso de yield return, yield break? - 2007/12/21 14:29 También pongo la contestación a la pregunta aquí:

Cuando miras por primera vez el código de ejemplo en C# que viene con Robotics Studio ves que hay algunas características nuevas de este lenguaje que se usan extensivamente. Hay instrucciones como yield return, yield break, y IEnumerator<ITask>, que puede que llamen tu atención.

Básicamente, todo este código, que puede parecer críptico si eres novato con C# 2.0, se refiere a iteradores. Al programar aplicaciones robóticas con Robotics Studio deberías entender claramente como se usan los iteradores.


Los Iterators(iteradores) pueden ser métodos, operadores de acceso get u operadores de una clase que soportan iteraciones con la instrucción foreach. Normalmente, si quieres usar la instrucción foreach con una clase determinadas tienes que implementar el interfaz IEnumerable. Sin embargo, usando iteradores puedes tener iteraciones foreach en una clase sin tener que implementar el interfaz IEnumerable por completo. Sólo tienes que escribir un iterador capaz de recorrer secuencialmente las estructuras de datos contenidas en tu clase. El compilador de Visual Studio detecta los iteradores y genera automáticamente los métodos de IEnumerable Current, MoveNext y Dispose.

Cuando se escribe el código de un iterador, la instrucción yield return se usa para devolver el elemento que toca en cada iteración, mientras que yield break termina la iteración. Los elementos devueltos por yield return <expresión> tienen que ser de tipo IEnumerable o IEnumerator. En el caso de Robotics Studio, cuando estamos usando el CCR, normalmente devolvemos un IEnumerator<ITask> (ya que los genéricos IEnumerable<T> y IEnumerator<T> también se pueden usar con iteradores). Básicamente, lo que estamos haciendo es despachar una colección de tareas.

Echa un vistazo a los siguientes enlaces para una explicación detallado y ver código de ejemplo:


Guía de Programación C#: Iteradores: http://msdn2.microsoft.com/es-es/library/dscyy5s0(VS.80).aspx
yield (Referencia de C#): http://msdn2.microsoft.com/es-es/library/9k7k7cf0(VS.80).aspx
Instrucción foreach (Referencia de C#): http://msdn2.microsoft.com/es-es/library/ttw7t8t6(VS.80).aspx
Utilizar Iteradores (Guía de Programación C#): http://msdn2.microsoft.com/es-es/library/65zzykke(VS.80).aspx
Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Titulares RSS
 Conscious Robots RSS FeedFuente RSS de Conscious Robots





¿Recuperar contraseña?
¿Quieres registrarte? Hazlo aquí
Mensajes en el Foro
 
Top! Top!