• [^] # Re: et si plusieurs return avec différents types

    Posté par (site web personnel) . En réponse au journal Non, l'inférence de types n'est pas du typage faible. Oui, elle rend les programmes plus lisibles. Évalué à 6.

    J'imagine que d'autres langages peuvent essayer de trouver un ancêtre commun, genre Object (je n'ai pas d'exemple d'un tel langage en tête).

    Scala.

    Mais bon celui qui m'écrit ça comme fonction prend une tarte. Dans un cas comme ça, on écrit un ADT, genre (en simplifié pour le boilerplate Scala, et modifié pour montrer le mix classe avec valeur interne / singleton) :

    sealed abstract class Temperature
    final case class Hot(value: String) extends Temperature // le cas "12" mais avec la valeur histoire de
    case object AbsoluteZero extends Temperature // le cas >=-273 que j'imagine être une erreur et devrait être <=
    case object Cold extends Temperature // le null
    def getTempCelsius(raw: Int): Temperature =
     if (raw >= 12)
     Hot(raw.toString)
     else if (raw <= -273)
     AbsoluteZero
     else
     Cold