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

来源:互联网 发布:汉语彝文在线翻译软件 编辑:程序博客网 时间:2024/06/05 03:56

单纯从面向对象的角度来看待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 0
原创粉丝点击