Caso 1: Llamada Normal y Retorno de Ningún Valor
Cuando se llama a una función se espera que esta retorne un valor. Por lo tanto, en el caso que no retorne ningún valor se producirá una excepción. Esto se puede conseguir con la instrucciónreturn void
. Este comportamiento es muy util en las funciones de búsqueda, ya que en caso que no encuentre el valor buscado retornarán void
. Si el código que llama a la función necesita obligatoriamente el valor buscado, se producirá una excepción indicando que algo ha ido mal en la ejecución del programa. Si no se genera la excepción, lo normal es que se produjera una excepción mas adelante y no quedaría claro que su origen era no haber encontrado un valor buscado. La excepción por retornar cero valores la genera
return void
. Si queremos indicar una excepción diferente a la estandar se puede poner entre parentesis detras de void
tal como sigue return void(excepción)
. Caso 2: Llamada Normal y Retorno de Varios Valores
En CoSeL, el caso que se realiza una llamada normal y se retornan varios valores se considera correcto. El valor que se retornará será el de la primera expresión delreturn
y el resto de expresiones ni se calcularán. Se ha considerado este comportamiento para conseguir que las funciones que retornan múltiples valores se puedan utilizar como funciones normales. Por ejemplo, la función
media
calcula la media de los valores de una lista. Durante el cálculo obtiene la suma de todos los valores. Entonces, puede ser interesante retornar la media y la suma por si es necesaria.
Fun Media(l:List) => { Var suma=0.0; for (v<-l) suma=suma+v; return suma/l.Length, suma; } media([1,2,3,10,5]) --> 4.20000 values(media([1,2,3,10,5])) --> (4.20000,21.0000)
No hay comentarios:
Publicar un comentario