스칼라에서는 숫자, 함수 등 모든 값에 유형이 있습니다. 다음 그림은 유형 계층 구조의 하위 집합을 보여줍니다.
Any
유형은 모든 유형의 상위 유형이며 최상위 유형이라고도 합니다. equals
, hashCode
및 toString
과 같은 몇 가지 일반적인 메서드를 정의합니다. Any
에는 AnyVal
및 AnyRef
라는 두 개의 직접적인 하위 클래스가 있습니다. Any
类型是所有类型的父类型,也称为顶级类型。它定义了一些通用的方法,如 equals
、hashCode
和 toString
。Any
有两个直接子类:AnyVal
和 AnyRef
。
AnyVal
代表值类型。有9种预定义的值类型,它们是不可为空的:Double
、Float
、Long
、Int
、Short
、Byte
、Char
、Unit
和 Boolean
。Unit
是一个不具备任何意义的值类型。Unit
只有一个实例可以像这样声明:()
。所有函数都必须返回某个值,因此 Unit
是一个有用的返回类型。
AnyRef
表示引用类型。所有的非值类型都被定义为引用类型。Scala中的每个用户定义类型都是 AnyRef
的子类型。如果Scala是在Java运行时环境中使用的,那么 AnyRef
对应于 Java.lang.object
。
这里有一个例子,它演示了字符串、整数、字符、布尔值和函数都是与其他对象一样的对象:
val list: List[Any] = List( "a string", 732, // an integer 'c', // a character true, // a boolean value () => "an anonymous function returning a string" ) list.foreach(element => println(element))
它定义了类型 List[Any]
的变量列表。这个列表是用各种类型的元素初始化的,但是它们都是 scala.Any
的实例,所以你可以把它们都添加到列表中。
下面是程序的输出:
a string 732 c true <function>
值类型可以通过以下方式进行转换:
例如:
val x: Long = 987654321 val y: Float = x // 9.8765434E8 (note that some precision is lost in this case) val face: Char = '☺' val number: Int = face // 9786
转换是单向的。下面最后一条语句将无法通过编译:
val x: Long = 987654321 val y: Float = x // 9.8765434E8 val z: Long = y // Does not conform
你还可以将引用类型转换为子类型。这将在之后的文章中被介绍。
Nothing
是所有类型的子类型,也称为底部类型。类型 Nothing
是没有值的。常见的用途是发出非终止信号,例如抛出异常、程序退出或无限循环(即,它是一种没有对值进行求值的表达式,或者是一种不返回正常值的方法)。
Null
是所有引用类型的子类型(即 AnyRef
的任何子类型)。它有一个由关键字 null
标识的单一值。Null
主要用于与其他JVM语言的互操作性,并且几乎不应该在Scala代码中使用。我们将在稍后的文章中介绍 null
AnyVal
은 값 유형을 나타냅니다. null을 허용하지 않는 9가지 사전 정의된 값 유형이 있습니다: Double
, Float
, Long
, Int
, Short
, Byte
, Char
, Unit
및 Boolean
. 단위
는 아무런 의미가 없는 값 유형입니다. Unit
의 인스턴스 하나만 ()
와 같이 선언할 수 있습니다. 모든 함수는 일부 값을 반환해야 하므로 Unit
은 유용한 반환 유형입니다. AnyRef
는 참조 유형을 나타냅니다. 값이 아닌 모든 유형은 참조 유형으로 정의됩니다. Scala의 모든 사용자 정의 유형은 AnyRef
의 하위 유형입니다. Scala가 Java 런타임 환경에서 사용되는 경우 AnyRef
는 Java.lang.object
에 해당합니다.
다음은 문자열, 정수, 문자, 부울 및 함수가 다른 객체와 같은 객체임을 보여주는 예입니다.
rrreee
List[Any]
목록 유형의 변수를 정의합니다. 목록은 다양한 유형의 요소로 초기화되지만 모두 scala.Any
의 인스턴스이므로 모두 목록에 추가할 수 있습니다. 다음은 프로그램의 출력입니다. 🎜rrreee🎜유형 변환🎜🎜값 유형은 다음과 같은 방법으로 변환할 수 있습니다.🎜🎜🎜🎜🎜🎜예: 🎜rrreee🎜변환은 단방향입니다. 아래 마지막 문은 컴파일되지 않습니다. 🎜rrreee🎜 참조 유형을 하위 유형으로 변환할 수도 있습니다. 이에 대해서는 이후 기사에서 다룰 것입니다. 🎜🎜Nothing 및 Null🎜🎜Nothing
은 모든 유형의 하위 유형이며 하단 유형이라고도 합니다. Nothing
유형에는 값이 없습니다. 일반적인 용도는 예외 발생, 프로그램 종료 또는 무한 루프(즉, 값으로 평가되지 않는 표현식 또는 일반 값을 반환하지 않는 메서드)와 같은 비종료 신호를 보내는 것입니다. 🎜🎜Null
은 모든 참조 유형의 하위 유형입니다(예: AnyRef
의 모든 하위 유형). null
키워드로 식별되는 단일 값이 있습니다. Null
은 주로 다른 JVM 언어와의 상호 운용성을 위해 사용되며 Scala 코드에서는 거의 사용해서는 안됩니다. 이후 문서에서 null
에 대한 대안을 다룰 것입니다. 🎜🎜🎜🎜🎜🎜🎜🎜🎜위 내용은 [스칼라 투어] 3-통합형 - TOUR OF SCALA SiFou의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!