gpt4 book ai didi

Scala bool 值到字符串的转换

转载 作者:行者123 更新时间:2023-12-04 19:05:53 24 4
gpt4 key购买 nike

一种转换方式 true: Boolean到一个字符串是

scala> true.toString
res: String = true

然而,
scala> true.asInstanceOf[String]
java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String

为什么后一种尝试失败了?

非常感谢

最佳答案

这是因为 Boolean不是 String 的子类型或与 String 兼容的类型

scala> val a: Any = "Hello"
a: Any = Hello

scala> val b = a.asInstanceOf[String]
b: String = Hello

scala> val c: Char = 123
c: Char = {

scala> val d = c.asInstanceOf[Int]
d: Int = 123

scala> (123).asInstanceOf[Double]
res0: Double = 123.0

scala> (1.3).asInstanceOf[Int]
res1: Int = 1

如您所见,我可以轻松地来回转换任何类型兼容的类型,在这种情况下,数字(包括字符)是交叉兼容的。所有类型均兼容 Any , 因为 Any只保存任何任意对象引用,所以只要你使用正确的类型“拆箱”,你就是金子。
scala> val arr = Array("Hello", 245, true)
arr: Array[Any] = Array(Hello, 245, true)

scala> val first = arr(0).asInstanceOf[String]
first: String = Hello

scala> val second = arr(1).asInstanceOf[Int]
second: Int = 245

scala> val third = arr(2).asInstanceOf[Boolean]
third: Boolean = true

这很好用,只要您小心拆箱,就不会出现任何错误。在将泛型引入语言之前,这就是您在 Java 中的做法。也就是说,如果您将任何一个数组元素转换为错误的类型,您将收到转换异常。
.toString方法不同于类型转换,因为它根本不是类型转换,它的存在是为了将任何对象转换为自身的字符串表示形式的简洁方式。
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> a.toString
res0: String = List(1, 2, 3, 4)

这样做是为了在必要时可以打印任何类型,并且与类型转换无关。

关于Scala bool 值到字符串的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25022787/

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