• scala --操作符和运算


    基本类型和操作

    scala 的基本类型包括如下几种

    数类型

    ​ 整数类型 :Byte Short Int Long

    ​ 小数类型: Float Double

    字符类型:Char 用'' 单引号包裹,是Unicode字符 转义字符也属于字符类型。

    字符串类型: String 【属于java.lang包】 用" " 双引号包裹 。 **""" """ ** 三引号表示,为原始字符串

    布尔值: Boolean

    除了String 属于Java.lang 包,其他都属于 scala 包

    如:Int 全名为 scala.Int ,但是,scala包和java.lang 包被每个源文件自动引用,所以可以简写为 Int

    字面量 就是直接写在代码里的常量值。

        println(
          """hello
            world
          """)
          /*
          显示如下
          hello
          		world 
          */ //因为""" 里面是原始字符,换行,空格,缩紧什么都会保持原样,所以就出现了字符串错位的情况,为了解决这个问题,我们使用 stringMargin方法。如下
    
        println(
          """|hello
            |world
          """.stripMargin)
        /*
        hello
        world
        /* 
    
    符号字面量

    '<标识符> 标识符可以是任何字母或数字(不能为数字开头)。如:'hellokitty 。符号字面量的唯一作用就是显示名字。

    scala> val a = 'hello
     // s: Symbol = 'hello
    scala> a.name
     // res9: String = hello
    /*注意区分 String类型
    
    scala> val s = "hello"
     //b: String = hello
    scala> s.name //报错
    
    scala> val m = '1234567 //报错
    scala> val o = '1234a //报错
    scala> val n = 'a122456 //没问题
    

    符号字面量是 scala.Symbol 的实例。 符号是限定的,如果有两个一样的符号字面量,那么两个字面量指向同一个Symbol对象。

    操作符和方法

    scala没有传统别的语言意义上的运算符,所有的+ - * / 等运算符其实是对象的方法。例如:

    1 + 2 //实际是:
      1.+(2) //调用了 1的+ 方法,并且把2作为参数传给它。
    

    + 是操作符,更具体的说是中缀操作符。操作符标注,不仅限于像+ 这种其他语言里看上去像操作符的东西,任何方法都可以被当作操作符来标注。例如上次我们的那个 类和对象里面有一个方法

    val result = cs.add(100)
    

    就可以写成如下形式

    val result = cs add (100)
    

    因为仅有一个参数,所以,小括号也可以省略,如下:

    val result = cs add 100
    

    scala 中,操作符不是特殊的语法,任何方法都可以是操作符。此二者只是对同一个函数,不同的使用方式造成的名字不同而已。

    前缀操作符

    前缀操作符是一元的,操作符在前,操作数在后。如-10,这些和中缀操作符一样,都是值对象调用方法的简写形式。

    然而,他们的方法写法为unary_.如:

      println(-2)
      println(2.unary_-)
    

    标识符中能作为前缀操作符的只有 + - ! ~ 四个。

    后缀操作符

    后缀操作符也是一元的。操作数在前,操作符在后。后缀操作符,是不用点或括号的不带任何参数的方法。在scala中,方法调用的空括号可以省略。

    惯例是,如果方法带有副作用那就加上括号,如println(),如果没有副作用就去掉括号。

        println("Hello World".toLowerCase())//点调用,有括号
        println("Hello World".toLowerCase) // 省略了括号
        println("Hello World"  toLowerCase) //后缀操作符
    

    注意,后缀操作符和操作符标注是有区别的。

    其余的操作符运算、优先级,和其他语言没什么差别。

  • 相关阅读:
    设计与声明
    字符串匹配算法——KMP、BM、Sunday
    红黑树——原理
    Linux命令——监视相关
    资源管理
    排序算法——QuickSort、MergeSort、HeapSort(C++实现)
    智能指针——使用与实现
    进程间通信——实现
    构造/析构/赋值运算
    物理内存管理
  • 原文地址:https://www.cnblogs.com/jijizhazha/p/7181293.html
Copyright © 2020-2023  润新知