学习scala的点点滴滴(3)---一切皆对象

单纯从面向对象的角度来看待scala,可以说scala就是一门纯面向对象的编程语言,因为在scala中,一切都可以看做是对象。这点和java是不同的,java中区分基本数据类型和引用类型。

  • 数字对象

5210000 + 1 *1024 / 1

在java中这就是基本的运算,但是scala中认为一切皆是对象,所以每个 数字你都可以当一个对象来处理,可以写成如下形式:

(5210000).+(((1).*(1024))./(1))

  • 函数对象
    这点也是scala函数式编程的一大亮点。函数可以作为参数来传递,也可以用变量来存储,还可以用函数来返回一个函数。

    object FunctionDemo extends App {
      def printResult(fun: (Int, Int) => Int): Unit = println(fun(4, 5))
    
      def add(x: Int, y: Int): Int = x + y
    
      printResult(add(_: Int, _: Int))
    }

    代码中定义了两个函数,printResult函数,add函数。

    • printResult函数的参数为接受一个函数,并返回Unit。
    • add函数的参数为两个Int类型的参数,并返回Int类型。

    最后一句代码函数调用,打印出求和结果。

  • 匿名函数
    在上面的例子中,add函数仅被调用过一次,这中情况下,我们可以不用单去定义,而是直接在调用出传第一个相应形式的函数即可,在scala中我们称之为匿名函数(anonymous functions,通俗解释:没有名字的函数。)

改用匿名函数后的代码如下:

object FunctionDemo extends App {
  def printResult(fun: (Int, Int) => Int): Unit = println(fun(4, 5))

  printResult((x, y) => x + y)
}

(x, y) => x + y 就是一个匿名函数,这里类型可以自动推断。如果单独定义一个匿名参数还是需要指定参数类型的。
如:

(x:Int,y:Int)=>x+y

=> 左侧是函数参数列表,=>右侧是函数体。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值