Scala笔记

1.在scala中每个表达式都有值,scala中有个Unit类,写做(),相当于Java中的void

 val n = if (1 < 2) ()
 println(n)

2.在scala中{}中可包含一系列表达式,块中最后一个表达式的值就是块的值

//下面就是一个块表达式
    val result = {
      if (x < 0){
        -1
      } else if(x >= 1) {
        1
      } else {
        "error"
      }
    }
 //result的值就是块表达式的结果
    println(result)

3.高级for循环:每个生成器都可以带一个条件,注意:if前面没有分号

for(i <- 1 to 3; j <- 1 to 3 if i != j)
      print((10 * i + j) + " ")
    println()

 4.for推导式:如果for循环的循环体以yield开始,则该循环会构建出一个集合

//每次迭代生成集合中的一个值
    val v = for (i <- 1 to 10) yield i * 10
    println(v)

5.Scala中的+ - * / %等操作符

Scala中的+ - * / %等操作符的作用与Java一样,位操作符 & | ^ >> <<也一样。只是有

一点特别的:这些操作符实际上是方法。例如:

a + b

是如下方法调用的简写:

a.+(b)

a 方法 b可以写成 a.方法(b)

6.将方法转换成函数(神奇的下划线)

方法名 空格 下划线

7.好用的until会生成脚标,0 until 10 包含0不包含10

8.在Scala中没有静态方法和静态字段,但是可以使用object这个语法结构来达到同样的目的

1.存放工具方法和常量

2.高效共享单个不可变的实例

3.单例模式

在Scala的类中,与类名相同的对象叫做伴生对象,类和伴生对象之间可以相互访问私有的方法和属性

通常我们会在类的伴生对象中定义apply方法,当遇到类名(参数1,...参数n)时apply方法会被调用

9.在Scala中,你不需要给每一个函数命名,没有将函数赋给变量的函数叫做匿名函数

 

由于Scala可以自动推断出参数的类型,所有可以写的跟精简一些

 

还记得神奇的下划线吗?这才是终极方式

 

10.柯里化指的是将原来接受两个参数的方法变成新的接受一个参数的方法的过程

11.隐式转换函数是指那种以implicit关键字声明的带有单个参数的函数

作者:Mr.SongHui
欢迎转载,但必须给出原文链接,并保留此段声明。
粉丝福利:
【腾讯云·年末有礼】云产品限时秒杀,云服务器1核2G,首年128元
【腾讯云】海外1核2G服务器低至2折,半价续费券限量免费领取!
【腾讯云】专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得
【腾讯云】热卖云产品3折起,云服务器、云数据库特惠,服务更稳,速度更快,价格更优
【腾讯云】腾讯云服务器安全可靠高性能,多种配置供您选择
【腾讯云】助力中小微企业上云,满足轻量级Web应用需求,云服务器钜惠 166元/年起
【腾讯云】云数据库全场年购3折起,新用户上云6个月仅需10元
【腾讯云】腾讯云数据库性能卓越稳定可靠,为您解决数据库运维难题
【腾讯云】腾讯云图,像PPT一样简单的数据可视化工具。5元搞定数据可视化,模板丰富,拖拖拽拽就能做出好看的可视化大屏
【腾讯云】流量包低至0.12元/GB , 结合在线教育、电商直播、社交直播场景,提供IM+直播+点播音视频组合优惠
【腾讯云】Redis单机版特惠2.1折起,为缓存业务量身定制,新用户8元起购
【腾讯云】专业版APP加固特惠5折起,可享免费兼容性测试
【腾讯云】专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得
[需要广告托管服务的朋友请留步哦]
原文地址:https://www.cnblogs.com/dintalk/p/15599578.html