• Scala学习笔记


    1.在Scala中,变量或函数的类型总是写在变量或函数的名称的后面。
     
    2.Scala并不区分基本类型和引用类型
     
    3.定义常量用val,定义变量用var
     
      通过val声明的只会生成getter,而var会生成setter,getter
     
    4.java中的++ i和i ++在Scala里不起作用
     
    5.参数化:在创建实例的同时就完成对它的“设置”
     
    6.a*b:左操作数是方法的调用者,可以写成a.*(b)
     
      但1:: twoThree,:: 方法的调用者是twoThree,1是方法的传入参数,可以写成twoThree.::(1)
     
    (以 ':' 结尾的方法由它的右操作数调用,并传入左操作数,以其他字符结尾的反之.)
     
    7.方法体前面没有等号,但带有花括号,那么方法的结果类型必定是Unit,
     
       如果方法最后返回的是String,但结果类型被声明为Unit,那么String将被转变为Unit并丢弃原值。所以为了避免出现错误,方法最好带上等号
     
    8.类和单例对象间的差别是。单例对象不带参数,而类可以,因为单例对象不是用new关键字实例化的,所以没机会传递给它实例化参数,单例对象在第一次访问的时候才会被初始化
     
    9.任何方法都可以是操作符,到底是操作符还是方法取决于你如何使用它,如果写成s.indexOf('o'),indexOf就不是操作符,但是如果写成s indexOf 'o',那么indexOf就是操作符,因为你以操作符标注方式使用它。
     
    10父类中成员声明为var的字体,则子类用val重写是错误的,因为var提供了setter/getter方法,而val只提供getter方法
     
    11.Scala里的每个辅助构造器的第一个动作都是调用同类的别的构造器
     
    12.本地函数可以访问包含其函数有参数。
     
    13.让函数字面量更简短的方式:去类型参数和省略括号,下划线当作一个或多个占位符
     
    14.在scala中,访问字段比调用方法略快,因为字段值在类初始化时候被预算,而方法调用在每次调用的时候都要计算,但是使用字段需要额外的内存空间。
     
    15.可以在调用不带参数的方法时省略空的括号
     
    16.Scala里的字段和方法属于相同的命名空间,所以可以使用字段来重写无参数方法,所以,Scala禁止在同一个类里用同样的名称定义字段和方法
    不同于Java(4个命名空间),Scala只有两个命名空间,值(字段,方法,包还有单例对象),类型(类和特质名)
     
    17.content mkstring " ":将content数组格式化为字符串,其中每个数组元素占据一行
     
    18.Any是所有其他类的超类,Nothing是所有其他类的子类
     
    19.声明函数时使用return语句,必须声明返回的类型如:def a() : Int = {return }
     
    20.若类中声明无参方法时没有带括号,那么在调用时也不能带括号 
     
    21.如果指针右侧只出现一次参数就可使用_
    如:    def f(x => x * 3)       
    等价于 def  f(_ * 3)
     
    22.泛型的类型匹配要注意List[String],Map[char,Int]不能被匹配,因为匹配是发生在编译进,List的泛型会被擦除掉,导致只要是List的就能匹配成功,但Array[Int]能匹配成功
  • 相关阅读:
    递归与尾递归总结
    JAVA基础——链表结构之双端链表
    JAVA基础——链表结构之单链表
    JAVA基础——集合Iterator迭代器的实现
    JAVA基础——Date和Calendar类
    JAVA基础——Native关键字
    Java基础——从数组到集合之间关键字的区别!!!!
    JAVA基础——集合类汇总
    Web前端性能优化——提高页面加载速度
    vue 与 angular 的区别
  • 原文地址:https://www.cnblogs.com/MOBIN/p/5294225.html
Copyright © 2020-2023  润新知