Scala
文章平均质量分 50
Leo Han
Leo Han
展开
-
scala函数,柯里化函数
scala中函数没有重载的概念,函数名称唯一,不区分参数,scala是完全面向对象,也是完全面向函数根据函数的最后一行推断返回类型:def test():String={print(1111)"Hello world"}这时候可以省略返回类型如果函数体只有一行代码,大括号可以省略def test():String = "Hello word "如果函数的声明没有参数列表,小括号可以省略:def test = "Hello World"但是这样访问的时候不能增加小括号,只能用原创 2022-01-03 17:27:59 · 255 阅读 · 0 评论 -
scala中泛型,协变和逆变
<:表示泛型的上限,传递数据应该是当前类,或者当前类的子类>:表示泛型的下限,和java不太一样,什么类型都可以传递scala中为了丰富泛型的功能,提供了协变(+)和逆变(-)的功能Scala的协变(+),逆变(-),协变covariant、逆变contravariant、不可变invariant对于一个带类型参数的类型,比如 C[T],如果对A及其子类型B,满足C[B]也符合 C[A]的子类型,那么就称为covariance(协变) ,如果 C[A]是 C[B]的子类型,即与原来的父原创 2022-01-03 16:46:50 · 413 阅读 · 0 评论 -
scala中隐式转换
scala中默认的情况下支持数值类型的自动转换byte->short->int->longscala默认情况下支语法中的类型的自动转换child -> parent -> trait(interfact)scala中也允许开发人员自定义类型转换规则,将两个无关的类型通过编程手段让他们可以自动转换隐式转换注意事项隐式转换的函数名可以是任意的,与函数名无关,与函数签名有关隐式函数可以有多个,但是需要保证当前环境下只有一个隐式转换函数能够被识别隐式值隐式值也叫隐原创 2022-01-03 16:39:04 · 541 阅读 · 0 评论 -
scala中下划线
替换java等价语法导入通配符//Javaimport java.util.*;//Scalaimport java.util._类成员默认值Java中类成员可以不赋初始值,编译器会自动帮你设置一个合适的初始值:class Foo{ //String类型的默认值为null String s;}而在Scala中必须要显式指定,如果你比较懒,可以用_让编译器自动帮你设置初始值:class Foo{ //String类型的默认值为null va原创 2022-01-03 16:11:50 · 165 阅读 · 0 评论 -
scala中case class与一般的class的区别
(1)case class初始化的时候可以不用new,也可以加上,但是class必须加new(2)默认实现了equals、hashCode方法(3)默认是可以序列化的,实现了Serializalbe(4)自动从scala.Product中继承一些函数(5)case class构造函数参数是public的,可以直接访问(6)case class默认情况下不能修改属性值(7)case class最重要的功能,支持模式配置,这也是定义case class的重要原因case class和case ob原创 2022-01-03 16:07:08 · 1322 阅读 · 0 评论