scala——traits

2024-05-11 05:48
文章标签 scala traits

本文主要是介绍scala——traits,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Traits, 类似于java中的接口,是用来定义object的方法。类似JAVA 8,在scala中,traits中的方法不是必须全部实现,可以为某个方法定义好默认的方法体,如:

trait Similarity {def isSimilar(x: Any): Booleandef isNotSimilar(x: Any): Boolean = !isSimilar(x)
}

以上的trait定义了2个方法,isSimilar(),isNotSimilar(); 其中,isSimilar()类似JAVA中的抽象方法,并没有提供实现,而isNotSimilar()方法提供了默认的实现,由此,若class实现此trait时,只需要提供isSimilar()的实现即可。scala中,通过多继承来结合traits和class。

如:

class Point(xc: Int, yc: Int) extends Similarity {var x: Int = xcvar y: Int = ycdef isSimilar(obj: Any) =obj.isInstanceOf[Point] &&obj.asInstanceOf[Point].x == x
}
object TraitsTest extends App {val p1 = new Point(2, 3)val p2 = new Point(2, 4)val p3 = new Point(3, 3)println(p1.isNotSimilar(p2))println(p1.isNotSimilar(p3))println(p1.isNotSimilar(2))
}
输出为:
false
true
true

这篇关于scala——traits的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978674

相关文章

【scala 安装错误】错误: 找不到或无法加载主类 scala.tools.nsc.MainGenericRunner

错误: 找不到或无法加载主类 scala.tools.nsc.MainGenericRunner 原因: Scala安装路径中包含空格。 解决办法:scala 不要安装在E:\Program Files 这种有空格的目录下,简直坑

Scala模式匹配下提取器构造

示例代码: object :> {def unapply[A] (list:List[A]) = {Some( (list.init,list.last) )}}object Extractor_Advanced {def main(args: Array[String]): Unit = {(1 to 9).toList match{ case _ :> 9 => println(

从spark源码的角度思考scala中的模式匹配

1.scala中模式匹配 2.spark源码中的模式匹配思考 spark中master会收到worker发过来的akka的消息, 此消息是case class即(Master.class中): case class RegisterWorker(id:String,host:String,port:Int,cores:Int,memory:Int,webUiPort:int

Scala界面事件处理

示例代码: import scala.swing.SimpleSwingApplicationimport scala.swing.MainFrameimport scala.swing.Buttonimport scala.swing.Labelimport scala.swing.Orientationimport scala.swing.BoxPanelimpo

Scala界面Panel、Layout初探

示例代码: package com.dt.scala.guiimport scala.swing.SimpleSwingApplicationimport scala.swing.MainFrameimport scala.swing.Buttonimport scala.swing.Labelimport scala.swing.Orientationimport scal

scala界面GUI编程实战初步了解

示例代码: import scala.swing._//SimpleSwingApplication继承自SwingApplication类(此类中有main方法,因此可以运行显示界面)object Hello_GUI extends SimpleSwingApplication {def top = new MainFrame{ //顶级容器title = "Hello GUI"co

Scala并发编程react、loop代码实战详解

示例代码及注释: //scala并发编程中的react和loop,共同特点://通过线程存用的方式让性能有所提升。//Actor本身的运行,被actor子系统管理的时候,会有一个或者多个远程的线程让当前的actor使用//一般情况下每个Actor都有自己的线程。只有有自己的线程时,我们的Actor中的actor方法才会执行。//但是,这样线程的开销会非常大,所以为了共用线

scala并发编程原生线程Actor、Case Class下的消息传递和偏函数实战

参考代码: import scala.actors._case class Person(name:String,age:Int)class HelloActor extends Actor{def act(){while(true){receive{case Person(name,age)=>{ //偏函数println("Name: "+ name + ":" +"Age:"

scala基础概念

Scala是面向行的语言,Scala 语句末尾的分号写或者不写都可以。 对象 - 对象有属性和行为。例如:一只哈士奇的属性有:颜色,名字,行为有:叫、跑、吃等。对象是一个类的实例。 类 - 类是对象的抽象;对象是类的具体实例。 方法 - 方法描述的基本的行为,一个类可以包含多个方法。 字段 - 每个对象都有它唯一的实例变量集合,即字段。对象的属性通过给字段赋值来创建。 基本语法

Scala:Scala基础语法【Scala语言是一个完全面向对象编程语言-->万物皆对象;Scala语言是一个完全函数式编程语言-->万物皆函数】

一、变量和数据类型 1、变量 说明:在Scala中声明一个变量时,可以不指定类型,编译器根据值确定 var | val 变量名 [: 变量类型] = 变量值 声明变量时,类型可以省略(编译器自动推导,即类型推导)类型确定后,就不能修改,说明Scala是强数据类型语言。变量声明时,需要初始值object TestVar {def main(args: Array[String]): Uni