首页 > 其他分享 >04-Scala高级特性

04-Scala高级特性

时间:2024-07-27 12:28:57浏览次数:12  
标签:value 04 val Scala 特性 Unit println def String

1.Trait

object CH_0213_Trait {
  def main(args: Array[String]): Unit = {
    val intelligentCar = new IntelligentCar()
    intelligentCar.fly()
    intelligentCar.say()
    intelligentCar.drive()
  }
}

trait Person {

  def say(): Unit ={
    println("Say something....")
  }

}

trait Car {

  def drive()={
    println("driving....")
  }

  def fly()

}

class IntelligentCar extends Car with Person {
  override def fly(): Unit = {
    println("Fly...")
  }
}

2.样例类

object CH_0214_CaseClass {
  def main(args: Array[String]): Unit = {
    val book1 = Book("Python", "人民日报出版", 30)
    val book2 = Book("Python", "人民日报出版", 30)
    println(book1.equals(book2))
    println(book1==book2)

  }
}

//凡是被cass class封装的对象,如果内容一致,则都相等
case class Book(bookName:String,publisher:String,price:Int){}

3.Match

object CH_0215_Match {

  def main(args: Array[String]): Unit = {

    val tup: (Double, Int, String, Boolean, Int) = (1.0,88,"abc",false,44)

    val iter: Iterator[Any] = tup.productIterator

    val res: Iterator[Unit] = iter.map(
      (x) => {
        x match {
          case 1 => println(s"$x...is 1")
          case 88 => println(s"$x ...is 88")
          case false => println(s"$x...is false")
          case w: Int if w > 50 => println(s"$w...is  > 50")
          case _ => println("wo ye bu zhi dao sha lei xing ")
        }
      }
    )
    while(res.hasNext)  res.next()
  }
}

4.偏函数

object CH_0216_PartialFunction {
  def main(args: Array[String]): Unit = {
    def xxx:PartialFunction[  Any,String] ={
      case "hello"  => "val is hello"
      case x:Int => s"$x...is int"
      case _ => "none"
    }
    println(xxx(44))
    println(xxx("hello"))
    println(xxx("hi"))
  }
}

5.隐式转换之隐式方法

object CH_0217_Implicit_Function {

  def main(args: Array[String]): Unit = {
    val value = new java.util.ArrayList[Int]()
    value.add(10)
    value.add(11)
    value.add(22)

    implicit def func01[T](arr:java.util.ArrayList[T])={
      val arrIter = arr.iterator()
      new Test01[T](arrIter)
    }

    value.foreach(println)
  }

}

class Test01[T](itr:java.util.Iterator[T]){
  def foreach(f:(T) => Unit)={
    while(itr.hasNext)f(itr.next())
  }
}

6.隐式转换之隐式转换类

object CH_0217_Implicit_Class {

  def main(args: Array[String]): Unit = {
    val value = new java.util.ArrayList[Int]()
    value.add(10)
    value.add(11)
    value.add(22)


    implicit class Test01[T](itr:java.util.Iterator[T]){
      def foreach(f:(T) => Unit)={
        while(itr.hasNext)f(itr.next())
      }
    }

    implicit def func01[T](arr:java.util.ArrayList[T])={
      val arrIter = arr.iterator()
      new Test01[T](arrIter)
    }

    value.foreach(println)
  }

}

7.隐式转换之隐式转换参数

object CH_0217_Implicit_Par {

  def main(args: Array[String]): Unit = {
    implicit val name = "zhangsan"
    implicit val age:Int = 20
    def func01(name:String)(implicit age:Int)={
      println(s"$name $age")
    }
    func01("lisi")
  }
}

标签:value,04,val,Scala,特性,Unit,println,def,String
From: https://www.cnblogs.com/crispy-bro/p/18325262

相关文章

  • C语言day04(输入输出、垃圾字符、分支语句)
    C语言day04【1】按照字符输入输出1》输出:putchar定义格式:intputchar(intc);功能:按照字符输出,向终端输出一个字符参数:要输出的字符的ascii值、字符返回值:输出字符的ASCII值2》输入:getchar定义格式:intgetchar(void)功能:按照字符输入,从终端输入一个字符参数:无......
  • Mojo AI编程语言(十二)高级特性:深入理解Mojo
    目录1.Mojo简介2.高级数据类型2.1数组与矩阵2.2多维数组2.3字符串操作3.并行计算3.1线程与协程3.2并行算法4.分布式系统4.1RPC与消息传递4.2分布式数据处理5.高级语言特性5.1泛型编程5.2函数式编程5.3元编程6.错误处理与调试6.1错误处理6.2......
  • Ubuntu24.04 安装MySQL8.0.36 并配置Navicat远程连接
    1.更新系统和软件源sudoaptupdate&&sudoaptupgrade2.安装mysqlsudoaptinstallmysql-server#也可以指定版本如sudoaptinstallmysql-server-8.0.363.查看是否安装成功mysql-V4.启动服务#启动服务sudoservicemysqlstartsudoservicemysqlstop#......
  • 04_String类
    一、String字符串是常量,创建之后不可被改变字符串字面值存储在字符串池中,可以共享Strings="Hello";产生一个对象,字符串池中存储Strings=newString("Hello");产生两个对象,堆、池各存储一个。二、常用方法publicintlength();返回字符串长度。publiccharcharAt(inti......
  • C++11特性总汇
    预定义宏211.预定义宏212.__func__宏返回当前所在函数或结构体名字213.#pragmaonce/_Pragma(“once”)该头文件只编译一次214.__VA_ARGS__变长参数宏定义#definePR(...)printf(__VA_ARGS__)215.宽窄字符串的连接支持longlongint类型22.longlongint......
  • 代码随想录day10 || 232 栈实现队列, 225 队列实现栈,20 删除有效括号,1047 删除字符串相
    232实现队列//go本身并不支持原生的栈和队列结构,都是通过切片实现的//leetcodesubmitregionbegin(Prohibitmodificationanddeletion)typeMyQueuestruct{ Data[]int Sizeint}funcConstructor()MyQueue{ returnMyQueue{}}func(this*MyQueue)Push(......
  • Python 教程(三):字符串特性大全
    目录专栏列表前言1.字符串基础2.字符串方法字符串查询字符串修改字符串切片3.字符串格式化旧式格式化(`%`操作符)`str.format()`方法f-string(Python3.6+)4.字符串编码5.Unicode和ASCII6.正则表达式7.字符串比较8.字符串连接9.字符串不可变性10.字符串的内......
  • Mac开发基础04-第一个Mac项目
    一、项目创建创建macOS项目时,在Xcode的项目设置向导中,您会遇到"Interface"、"Language"、和"Storage"等选项。这些选项决定了您项目的基本框架、编程语言以及数据持久化的技术。下面逐一解释这些选项:Interface"Interface"(用户界面)选项让您选择创建用户界面的技术。对于macOS项......
  • P9304 「DTOI-5」3-1题解,c++树的遍历例题
    题意给定以n(1≤n≤1......
  • 题解:P10043 [CCPC 2023 北京市赛] 广播
    博客使用更佳:Myblog题目传送门这道题是一个标准的dp了,只不过它要倒序来做。还是分三步。初值:初值想必都知道吧,若要求最小值,就把初值设成无穷大,\(dp_{0,i}\)和\(dp_{i,0}\)都要设成\(i\),\(dp_{0,0}\)一定要赋值成\(0\),这是本人亲自犯过的错误QwQ。状态:\(dp_{i,j}......