Scala之旅(5)——基础概要(一切皆对象)

apply方法

当类或对象有一个主要用途的时候,apply方法提供了一个很好的语法糖。



单例对象

object修饰的类便是一个单例对象。


伴生对象

当单例对象和类的名称相同时,该单例对象称作该类的“伴生对象”。伴生对象常常用作类工厂使用。


一切皆对象(包括函数)

Scala是对象的函数式编程。什么是函数呢?函数其实是一些特质的集合。比如说,含有一个参数的函数其实是Function1特质的一个实例。Function1特质定义了apply语法糖,当你调用对象时感觉就像是在调用一个函数。

Function特质集合下标从0到22。其中22是作者的一个主观魔幻数字,因为作者认为没有一个函数的参数数量超过22个的,至少还没有遇见过。apply语法糖统一了对象和函数式编程的二重性。一个函数本质上是一个类的实例,我们可以传递一个类,并把他当做函数使用。

需要明确的是,我们在一个类中定义一个方法时,得到的并不是一个Function*的实例,所以,在类中定义的方法本质上是方法,并不是函数。

我们在repl中独立定义的方法是Function *的一个实例,是函数不是方法。

当然,类也可以扩展为Function,类的实例可以使用()方式调用。如下所示:


更简洁的写法:用(Int => Int)代替Function1


猜你喜欢

转载自blog.csdn.net/stefan_xiepj/article/details/80268559