gpt4 book ai didi

scala - 整数 vs 整数 : type mismatch, 找到 : Int, 需要:字符串

转载 作者:行者123 更新时间:2023-12-03 21:42:09 27 4
gpt4 key购买 nike

我将这些输入到 Scala 解释器中:

val a : Integer = 1;
val b : Integer = a + 1;

我收到消息:
<console>:5: error: type mismatch;
found : Int(1)
required: String
val b : Integer = a +1
^

为什么?我该如何解决这个问题?
这次由于 Java 互操作性原因我需要整数。

最佳答案

这个问题几乎是重复的:Scala can't multiply java Doubles? - 你可以看看my answer同样,因为想法是相似的。

Eastsun已经暗示过,答案是来自 java.lang.Integer 的隐式转换(基本上是盒装 int 原语)到 scala.Int ,这是表示 JVM 原始整数的 Scala 方式。

implicit def javaToScalaInt(d: java.lang.Integer) = d.intValue

并且已经实现了互操作性 - 您提供的代码应该可以很好地编译!以及使用 scala.Int 的代码哪里 java.lang.Integer由于自动装箱,需要似乎工作得很好。所以以下工作:
def foo(d: java.lang.Integer) = println(d)
val z: scala.Int = 1
foo(z)

另外,如 michaelkebe说,不要用 Integer type - 实际上是 scala.Predef.Integer 的简写因为它已被弃用,并且很可能会在 Scala 2.8 中被删除。

编辑 : 哎呀...忘记回答为什么了。您得到的错误可能是 scala.Predef.Integer试图模仿 Java 的语法糖,其中 a + "my String"表示字符串连接, aint .因此 + scala.Predef.Integer 中的方法type 只进行字符串连接(需要 String 类型),没有自然整数加法。

——弗拉维乌·西皮根

关于scala - 整数 vs 整数 : type mismatch, 找到 : Int, 需要:字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1566315/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com