![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Scala
夏殿灬青葛石
雨天不忘奔跑。
展开
-
scala模式匹配 match case
(1)如果所有 case 都不匹配,那么会执行 case _ 分支,类似于 Java default 语句,若此时没有 case _ 分支,那么会抛出 MatchError。(4)=> 后面的代码块,直到下一个 case 语句之前的代码是作为一个整体执行,可以使用{}括起来,也可以不括。(2)每个 case 中,不需要使用 break 语句,自动中断 case。(3)match case 语句可以匹配任何类型,而不只是字面量。如果想要表达匹配某个范围的数据,就需要在模式匹配中增加条件守卫。原创 2023-04-25 15:45:08 · 207 阅读 · 0 评论 -
scala数组创建、访问、遍历与元素追加
不推荐使用二维以上的数组原创 2023-04-24 21:30:28 · 507 阅读 · 0 评论 -
scala枚举类和应用类
枚举类:需要继承 Enumeration应用类:需要继承 App定义新类型:使用 type原创 2023-04-24 20:18:31 · 196 阅读 · 0 评论 -
scala特质自身类型
自身类型可实现依赖注入的功能原创 2023-04-24 18:56:37 · 141 阅读 · 0 评论 -
scala特征叠加
如果要指定super指定的是那个特质、父类,简单如下操作就行了。从右向左叠加,最后的特征最先输出。原创 2023-04-24 18:12:10 · 70 阅读 · 0 评论 -
scala特质trait
Scala 语言中,采用特质 trait(特征)来代替接口的概念,也就是说,多个类具有相同的特质(特征)时,就可以将这个特质(特征)独立出来,采用关键字 trait 声明。原创 2023-04-24 16:31:57 · 80 阅读 · 0 评论 -
scala实现单例设计模式
通过类的构造方法私有化,再在其伴生对象中定义获取对象实例的唯一方法来实现原创 2023-04-24 13:13:14 · 118 阅读 · 0 评论 -
scala单例对象(伴生对象)使用场景
我们都知道,静态成员在 Java 中有很大的作用,因为 Java 没有全局变量,也不存在包级函数,一切属性和方法都是在类里面,所以在写一些工具函数和全局变量时,都需要用到 static 关键字修饰的静态成员。由于scala移除了static关键字,有时候我们又需要实现类似的功能,这个时候可以使用类的伴生对象来实现,使得一些属性、方法能够在更大的作用域生效原创 2023-04-24 11:16:14 · 90 阅读 · 0 评论 -
scala匿名子类
当业务需要实现一个抽象类的属性、方法并调用,但不关心其名字的时候,可以使用匿名子类。和 Java 一样,可以通过包含带有定义或重写的代码块的方式创建一个匿名的子类。原创 2023-04-24 10:47:20 · 67 阅读 · 0 评论 -
scala抽象属性和方法
(1)如果父类为抽象类,那么子类需要将抽象的属性和方法实现,否则子类也需声明为抽象类(2)重写非抽象方法需要用 override 修饰,重写抽象方法则可以不加 override。(3)子类中调用父类的方法使用 super 关键字(4)子类对抽象属性进行实现,父类抽象属性可以用 var 修饰;原创 2023-04-24 10:31:21 · 160 阅读 · 0 评论 -
scala主构造方法与辅助构造方法的使用
(1)辅助构造器,函数的名称 this,可以有多个,编译器通过参数的个数及类型来区分。(2)辅助构造方法不能直接构建对象,必须直接或者间接调用主构造方法。原创 2023-04-22 18:59:57 · 274 阅读 · 0 评论 -
scala访问权限
在 Java 中,访问权限分为:public,private,protected 和默认。在 Scala 中,你可以通过类似的修饰符达到同样的效果。但是使用上有区别。原创 2023-04-22 18:05:47 · 334 阅读 · 0 评论 -
scala的类与对象
Scala 中的 public 属性,底层实际为 private,并通过 get 方法(obj.field())和 set 方法(obj.field_=(value))对其进行操作。所以 Scala 并不推荐将属性设为 private,再为其设置public 的 get 和 set 方法的做法。原创 2023-04-22 16:30:15 · 57 阅读 · 0 评论 -
scala 柯里化+传名参数+递归 实现while关键字功能
首先我们定义一个myWhile函数,它的两个参数分别是返回值为Boolean类型、Unit类型(无返回值)的代码块,该函数没有返回值如果传入的第一个代码块condition的返回值为true则执行传入的第二个代码块op,接着再次以参数condition、op执行myWhile函数(递归),直到多次op操作后condition不再为true,终止循环,否则死循环原创 2023-04-21 21:48:45 · 86 阅读 · 0 评论 -
scala控制抽象之传名参数(名调用)
直接将一个Int类型的数字作为代码块传入当然也是可以的,但注意上面作为参数传入f1的不是f2(2)(3)的int类型结果,而是传入了完整的代码块。因为这里f2的执行已经被f1给控制了,a在f1中出现多少次,f2就会被调用多少次,执行的时机也被f1控制了。等同于将f2调用的控制权限抽象出来,交给了f1中的a,这就是控制抽象。原创 2023-04-21 20:56:17 · 104 阅读 · 0 评论 -
Scala循环中断
首先导入Breaks类,调用该类下的breakable方法(表示接下来的代码是可中断的),在需要中断的地方调用该类下的break方法即可跳出当前循环。在scala中无法直接使用break关键字跳出当前循环,但有其他方法。原创 2023-04-20 09:23:38 · 239 阅读 · 0 评论 -
scala闭包与柯里化
闭包:如果一个函数,访问到了它的外部(局部)变量的值,那么这个函数和他所处的环境,称为闭包。原创 2023-04-21 16:56:47 · 111 阅读 · 0 评论 -
Scala对数组数据进行map(数据转换)操作
首先,我们定义一个arrayOperation的函数,它的两个参数分别是需要传入的原数组和需要进行的数据操作函数arrayOperation函数采用for循环对传入的数组进行遍历,将其中的元素用传入的函数进行数据操作并 yeild 生成一个新数组接着,写一个带有数据的数组arr和一个数据操作函数addOne,将它们作为参数传给arrayOperation函数,完成对数据的map(数据转换)操作原创 2023-04-20 19:53:04 · 415 阅读 · 0 评论 -
scala递归与优化
这样处理虽然可以实现,但显然会出现一个问题,如我计算1024的阶乘,即fact(1024),在完成最后一步前,fact1024-fact1所占用的资源和其入栈的局部变量、上下文等都不会被释放,等于我同时启动了1024个进程,它们都在等待其它进程的结束以给它们需要的结果,这还是比较简单的递归程序,如果要实现比较复杂的逻辑和功能,可以预见后果是非常可怕的。那么该如何解决呢?原创 2023-04-21 20:09:03 · 83 阅读 · 0 评论 -
Scala嵌套循环打印多维数组、九九乘法表
简单遍历打印并用制表符分隔,并加上换行条件判断。原创 2023-03-16 16:18:49 · 196 阅读 · 0 评论 -
Scala流程控制与返回值
String是一个AnyRef,Int是一个AnyVal,公共父类是Any。原创 2023-03-01 18:40:41 · 165 阅读 · 0 评论 -
scala从文件中读取数据、将数据写入文件
调用scala.io中Source包下的fromFile方法,参数给路径,直接读取打印。scalaIO中并没有相关方法,直接调javaIO中方法。在resources目录下新建一个test.txt文件。新建一个maven项目,添加scala支持,原创 2023-02-22 20:43:05 · 920 阅读 · 0 评论 -
scala中类、方法与伴生对象的简单使用
对alice和bob进行实例化,并调用printInfo方法打印其信息。原创 2023-02-16 19:19:19 · 142 阅读 · 0 评论 -
HelloScala
打开命令行,cd 进入文件存放路径(我这里放在Desktop目录)编译成功后Desktop目录下多出两个文件。写一个文本文件,改后缀为scala。.class 和 $.class。用scalac 命令进行编译。原创 2023-02-16 13:28:58 · 140 阅读 · 0 评论 -
Scala环境搭建
scala安装以及环境配置原创 2022-12-16 17:48:16 · 763 阅读 · 0 评论