floatにリテラル割り当てる型の不一致エラー

イワン・リー:

私は明示的に指定floatタイプを。このコードは、エラーが発生していました。どうして?

現在、私は、Scalaのv2.12.8を使用しています

scala> val f: Float = 3.0
<console>:11: error: type mismatch;
 found   : Double(3.0)
 required: Float
       val f: Float = 3.0
だまさとして:

この動作はScalaの3(義母)に固定されています。

Starting dotty REPL...
Dotty compiler version 0.22.0-RC1 -- Copyright 2002-2020, LAMP/EPFL
scala> val x: Float = 3.14
val x: Float = 3.14

scala> Seq(3.14, 1)
val res0: Seq[Double] = List(3.14, 1.0)

scala> Seq[Float](3.14, 1)
val res1: Seq[Float] = List(3.14, 1.0)

これは、非可逆変換を被るリテラルの型を推論しません。

scala> Seq(3.14f, 2147483646)
val res2: Seq[AnyVal] = List(3.14, 2147483646)

scala> Seq(3.14f, 2147483647)
val res3: Seq[Float] = List(3.14, 2147483647)

そこ非可逆変換が必要なときに警告するためのオープンチケットがあるが、一般的に、それはかなりうまく動作します。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=477373&siteId=1