• scala基础学习


    scala部署好以后我们来进行基础学习

    val与var

    scala> val name:String = "17"
    name: String = 17

    scala> name = "dashu"
    <console>:12: error: reassignment to val
    name = "dashu"
    ^

    scala>

    报错分析:

     re  重新

    assign  分配

    ment  名词后缀

    意思是val定义的不能重新赋值

    scala> var money:Int = 10000
    money: Int = 10000

    scala> money = 20000
    money: Int = 20000

    scala>

    分析:用var重新赋值就不会报错

    总结:在scala要定义一个名称肯定要的东西肯定用val或者var,只有这两种

     简写:

    scala> val name = "big tree"
    name: String = big tree

    scala> var money = 10000
    money: Int = 10000

    说明:名字后边的数据类型在=后边有值的情况下可以省略,也就是说scala里的数据类型是可以推到的

    数据类型:

    Byte Char

    short

    常用:Int Long Float Double Boolean

    数据类型的应用

    数据太长,Int类型装不下,需要用long类型,在数值以后加一个l就可以判别是long类型了

    场景一

    scala> val money = 10020202020202020
    <console>:1: error: integer number too large
    val money = 10020202020202020
    ^

    scala> val money = 10020202020202020l
    money: Long = 10020202020202020

    scala>

    场景二

    scala> val b:Float = 1.2
    <console>:11: error: type mismatch;   ##提示类型不匹配
    found : Double(1.2)    ##找到的是double类型
    required: Float          ##需要的是float类型
    val b:Float = 1.2       
    ^

    解决,在数值后边加一个f(大小写都可以),即可判定是float类型

    scala> val b:Float = 1.2f
    b: Float = 1.2

    scala>

    场景3

    scala> val a = 10.asInstanceOf[Double]
    a: Double = 10.0

    asInstanceOf  把10整数转为10.0double类型

    scala> val b = 10.isInstanceOf[Int]
    b: Boolean = true

    scala> val b = 10.isInstanceOf[Float]
    b: Boolean = false

    scala>

    isInstanceOf   判断数据类型

    函数

    函数图解

    eg:

    package FunctionApp   ##包名
    
    object FunctionApp {
      def main(args: Array[String]): Unit = {  //定义的主类
        println(sum(2,5))//函数的调用
        sayhello    //函数的调用
        sayworld("zz")  //函数的调用
      }
    //===========================以下是定义函数===========================================
      def sum(x: Int, y: Int): Int = {//定义了一个求和函数,要传入两个参数
        x + y
      }
       def sayhello():Unit ={  //定义了一个函数,不需要传入任何参数
       println("若泽数据欢迎您...")
       }
    
      def sayworld(name:String):Unit ={//定义了一个函数需要输入一个字符串类型的参数,也就是在输入参数的时候需要加上""
        println("若泽数据欢迎您..."+name)
      }
    
    }

    执行结果:

    7
    若泽数据欢迎您...
    若泽数据欢迎您...zz

    循环表达式

    to的用法

    scala> val z = 1 to 10
    z: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

    分析:

    1.左闭右闭[1,10]

    2.Range.Inclusive 底层调用,这个Inclusive就相当于左闭右闭

    3.因为考虑到底层调用的是Range,那我没若果直接用Range,会怎么呢?如下所示

    scala> Range(1,10)
    res2: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)

    Range底层调用的是Range,但是后边没有Inclusive,结果是1-9,也就是左闭右开

    scala> 1 until 10
    res1: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)

    分析:until和range是一样的

    步长

    scala> Range(10,1,-1)
    res4: scala.collection.immutable.Range = Range(10, 9, 8, 7, 6, 5, 4, 3, 2)

    scala> Range(1,10,3)
    res1: scala.collection.immutable.Range = Range(1, 4, 7)

    Range的第3个参数就是步长

    scala> Range(1,10,0)
    java.lang.IllegalArgumentException: step cannot be 0.
    at scala.collection.immutable.Range.<init>(Range.scala:86)
    at scala.collection.immutable.Range$.apply(Range.scala:439)
    ... 32 elided

    当步长为0时会报错,说不能为零,那这句报错的来源是什么呢?

    我们去查看一下Rang.scala,从下边的图片中可以看出,报错内容来自于红色框内的。条件是,当步长等于0时报错。

  • 相关阅读:
    PHPStorm 使用 Xdebug
    Composer包收录
    PHP 框架实现原理
    微信小程序实现弹窗效果
    阿里矢量图iconfont的使用方法
    CSS 样式初始化代码
    css 问题集
    Mysql5.7版本sql错误:this is incompatible with sql_mode=only_full_group_by
    解决flex布局的space-evenly兼容性问题
    axios 的使用
  • 原文地址:https://www.cnblogs.com/xuziyu/p/10806751.html
Copyright © 2020-2023  润新知