J'ai accidentellement remarqué ce qui suit :
scala> class g[T](val x:T)
defined class g
scala> val obj=new g[Int]('A')
obj: g[Int] = g@1082d45
scala> obj.x
res6: Int = 65
Que se passe-t-il ici ? Un typecast ?
J'ai accidentellement remarqué ce qui suit :
scala> class g[T](val x:T)
defined class g
scala> val obj=new g[Int]('A')
obj: g[Int] = g@1082d45
scala> obj.x
res6: Int = 65
Que se passe-t-il ici ? Un typecast ?
C'est une conversion ascendante des primitives. Les valeurs primitives se convertissent elles-mêmes au type numériquement plus grand suivant si cela semble nécessaire. Ainsi, val s: Short = (0: Byte)
œuvres. Rien ne se convertit en Char
mais Char
deviendra un Int
, Long
, Float
ou Double
s'il le faut pour être le bon type d'argument.
La raison pour laquelle nous procédons ainsi est principalement due au fait que c'est la façon dont Java procède, mais aussi parce que l'obtention d'une erreur à partir de la commande val d: Double = 0
est vraiment ennuyeux car 0
s'inscrit bien sûr dans un Double
sans aucun problème, et il n'y a aucune ambiguïté sur le type non plus.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.