My Lambda:
error: type mismatch: inferred type is (Int) -> Int but Int was expected
val streetNumber: Int = {
^
3 Réponses :
Votre type de variable int code> n'est pas correct dans ce cas, ce que vous voulez faire à la place: val streetNumber: (Int) -> Int = {
num: Int -> num / 4
}
Vous n'avez pas besoin num: int code> à l'intérieur de la Lambda, le type est spécifié sur le côté gauche de = code>. Il suffit de dire {num -> num / 4} code>. Vous pouvez le faire encore plus court si vous utilisez le nom de paramètre par défaut - it code>: `:` `` val streetnumber: (int) -> int = {it / 4} `` `
C'est facultatif, oui. Dans ce cas, je viens de corriger le code d'origine et je ne l'ai pas simplifiée
déclarant: signifie que le type de données code> s de StreetNumber code> est int code> et pas strong> que le Type de retour est INT code>.
Ce conflit avec l'affectation: P> 3
Le type de données ne doit pas être identique au type de retour? Comment définir int code> comme type de données de streetnumber code> puis renvoyer une chaîne code> code> dans la fonction?
Le type de données ne doit pas être identique au type de retour? i> Non. Comment définir int code> comme type de données de StreetNumber i> ? Tu ne le fais pas. La variable StreetNumber type code> S est (int) -> int code> et non int code>. Pensez-y comme une variable de fonction. Le type de retour est int code>.
Pour développer sur le dernier commentaire: Streetnumber Code> est mis sur un lambda i> - un bloc de code anonyme qui prend un paramètre int code> et renvoie un < code> int code> (c'est ce que (int) -> int code> signifie). Le code comme indiqué n'est pas appeler i> la Lambda, le stocke simplement pour une utilisation future. Si / quand il est appelé, il retournera un int code>, mais ce n'est pas ce que streetnumber code> est défini sur.
Pouvez-vous donner un exemple où le type de données et le type de retour sont différents? @ forpas
Consultez ma réponse modifiée et vérifiez le lien pour plus d'informations.
Vous pouvez le faire facilement, puis, appelez-le comme, p> C'est le moyen le plus simple, de faire cette chose. p> p>
Vous déclarez
streetnumber code> pour avoir typeint code>, mais votre Lambda est de type(int) -> int code>.