首页 > 其他分享 >Scala学习(除列表集合等)

Scala学习(除列表集合等)

时间:2022-11-27 22:22:44浏览次数:37  
标签:函数 Scala Int 列表 override def 集合 Unit String

Idea配置安装

 

进入idea后,选取file中的setting选项,在plugins中安装scala,之后重启idea。

 

右键点击项目,选取Add Framework Support,并选取对应的scala版本

 

 新建文件夹,并将文件夹改为source Root

 

之后,即可创建scala.class了

 

变量

变量声明时,类型可以省略,编译器可自动进行类型推导

 

字符串变量替换

Scala中基础的字符串插值就是在字符串前加字幕‘s’,然后在字符串中放入变量,每个变量都应以‘$’开头。

 

字符串多行输出

三引号表示字符串,保持多行字符串的原格式输出

 

文件读写

 

数据类型

Scala中数据分为两大类:数值类型和引用类型,他俩都是对象,都是Any的子类

 

StringOps是对Java中的String的增强

 

Unit:对应java中的void,用于方法返回值的位置,表示方法没有返回值。Unit是一个数据类型,只有一个对象就是();而void不是数据类型,它只是一个关键字

 

数值类型转换

1:自动提升原则:有多种类型的数据进行混合运算时,系统首先自动将所有数据转换成精度大的那种数据类型,然后再进行计算

2:把精度大的数值类型赋值给精度小的数值类型时,就会报错,因此需要进行强转(精度可能会降低或溢出);反之就会进行自动类型转换

3:(byte、short)和 char 之间不会相互自动转换

4:byte,short,char三者可以计算,在计算时首先转换为int类型

 

流程控制

if拓展——三目运算符拓展

 

for循环——普通

 

for循环——range

 

循环守卫——代替java中的continue

 

 循环步长

 

循环中断

 

函数式编程

解决问题时,将问题分解成一个一个的步骤,将每个步骤进行封装(函数),通过调用这些封装好的步骤,解决问题

 

函数基础语法

 

scala自动将函数的最后一行的值作为返回值,省略return;{}中只有一行语句可省略{}

 

可变参数个数的函数定义

 

高阶函数

    /**
     * 高阶函数
     * 函数的参数是函数
     * 函数的返回值是函数
     */
    def fun1(a:Int, f:(Int,Int) => Int)= {
      var result = f(4, 4)
      print("----------")
      a * result
    }
    def sum(a:Int, b:Int): Int = {
      a + b
    }
    println(fun1(5, sum))   //--------40

    def fun3(a:Int, b:Int): (String, String)=>String = {
      def fun4(c: String, d: String) = {
        a + b + c + d
      }
      fun4
    }

    val function = fun3(1, 2)
    println(function("3", "4")) // 334

 

以下等同于fun4(_, _)(1,2)

 

对象

scala中没有public,一个.scala中可以写多个类

@BeanProperty——可自动生成Java中的get/set方法

 

访问权限

 

继承、多态——override

当一个类extends另外一个类的时候,override的规则基本如下:

  1:子类中的方法要覆盖父类中的方法,必须写override

  2:子类中的属性val要覆盖父类中的属性,必须写override

  3:父类中的变量不可以覆盖

 

抽象类不需要用override

 

特质

 

1:当一个类继承其它类,且具有某个特质时,若继承的类与特质中的变量有重复,则需要在该类中用override重写该变量

 

Trait函数多重叠加,会从后往前执行方法

object Test15_TraitOverlying {
  def main(args: Array[String]): Unit = {
    val student = new Student15
    student.increase()    // 输出knowledge increased
  }
}

trait KnowLedge15 {
  var amount: Int = 15
  def increase(): Unit = {
    println("knowledge increased")
  }
}

trait Telent15 {
  def singing(): Unit
  def dancing(): Unit
  def increase(): Unit = {
    println("talent increased")
  }
}

class Student15 extends Person13 with Telent15 with KnowLedge15 {
  override def dancing(): Unit = println("dancing")

  override def increase(): Unit = super.increase()

  override def singing(): Unit = println("singing")
}        

 

泛型

 

协变和逆变

class MyList[+T] // 协变

class MyList[-T] // 逆变

 

协变:Son是Father的子类,则MyList[Son]也作为MyList[Father]的“子类”

逆变:Son是Father的子类,则MyList[Son]作为MyList[Father]的“父类”

 

上下限

泛型上下限的作用是对传入的泛型进行限定

Class PersonList[T<:Person] // 泛型上限

Class PersonList[T>:Person] // 泛型下限

 

Class PersonList[T>:Person] // 泛型下限

标签:函数,Scala,Int,列表,override,def,集合,Unit,String
From: https://www.cnblogs.com/tianshu/p/16790891.html

相关文章

  • 学生管理系统-通过集合-遍历学生类
    packagecom.集合;importjava.util.ArrayList;importjava.util.Scanner;publicclass学生管理系统{publicstaticvoidmain(String[]args){System.out.......
  • python 列表排序方法
    常见的列表排序方法参考:https://blog.csdn.net/m0_69265664/article/details/125703164iterable.sort()参考:https://blog.csdn.net/rhx_qiuzhi/article/details/1193025......
  • springboot集合efk搭建日志平台
    springboot继承efk实现日志收集1.安装es和kibana我使用的云服务器centos7,2核+4G内存,跑起来内存使用率50%左右建议使用最低配置和我一样,1+2的配置kibana应该跑不起来,......
  • 集合初认识
    /*需求:1.学会导入集合的包2.学会给集合赋值集合对象.add(赋给集合的值)3.学会给集合指定的位置赋值集合对象.add(索引值,赋给集合的值)*/  /*当插入......
  • 集合的常用的方法
    /*需求:学会使用集合的常用方法1.A.remove()删除指定集合中的值,并且返回ture或者false,括号里写你想要删除的值2.A.remove()删除指定索引处集合中的值,并且返回被删除的集......
  • 集合
    集合集合概述数组其实就是一个集合。集合实际上就是一个容器。可以来容纳其它类型的数据。集合为什么说在开发中使用较多?集合是一个容器,是一个载体,可以一次容纳多个对......
  • HTML网址集合
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>网址</title></head><body><h1>网址</h1><ahref="https://www.baidu.com">百度</a><ahref="ht......
  • C# 集合
    C#集合usingSystem.Data;usingSystem.Collections;//数组(Array)string[]arr={"Hello","World"};int[]nums={1,99,2,66,15,8};//哈希表(Hasht......
  • vue 列表页面点击编辑页面传值
    props分为三种形式props为对象props为布尔值,这种只能接收params动态路由的参数props为函数,可以接收query和params参数(推荐)importVuefrom'vue'importVueRoute......
  • 记一次List集合存入(null)空元素
    1问题原因误将空元素null值存入到了List集合中,导致后续的调用中出现了空指针。后续修改使用Stream过滤掉了空元素。2集合特性Java容器分为Collection和Map两大类,Coll......