scala读书学习笔记003

1、类是对象的蓝本(blueprint)。一旦你定义好一个类,就可以用new关键字从这个类蓝本创建对象。在类定义中,你会填入字段(field)和方法(method),这些被统称为成员(member)。通过val或var定义的字段是指向对象的变量,通过def定义的方法则包含了可执行的代码。字段保留了对象的状态,或者说数据,而方法用这些数据来对对象执行计算。当你实例化一个类,运行时会指派一些内存来保存对象的状态图。字段又叫作实例变量(instance variable),因为每个实例都有自己的变量。这些实例变量合在一起,构成了对象在内存中的映像。


2、通过将字段标记为私有(private)来防止外部直接访问字段。因为私有字段只能被定义在同一个类中的方法访问,所有对状态的更新操作的代码,都在类的内部。要将某个字段声明为私有,可以在字段前加上private这个访问修饰符。在Scala中,使得成员允许公共访问(public)的方式是,不在成员前面显式地给出任何访问修饰符。换句话说,在那些在Java中可能会用“public”的地方,到了Scala中,什么都不说就对了。公共访问是Scala的默认访问级别。


3、Scala方法参数的一个重要特征是它们都是val而不是var。在没有任何显式的return语句时,Scala方法返回的是该方法计算出的最后一个(表达式的)值。尽量将每个方法当作一个最终交出某个值的表达式,仅仅因为其副作用而被执行的方法被称作过程(procedure)。


4、在Scala程序中,每条语句最后的分号通常是可选的。你想要的话可以键入一个,但如果当前行只有这条语句,分号并不是必需的。另一方面,如果想在同一行包含多条语句,那么分号就有必要了。当用中缀(infix)操作符比如+来串接表达式时,一个常见的Scala风格是将操作符放在行尾而不是行首。cala的类不允许有静态(static)成员。


5、当单例对象跟某个类共用同一个名字时,它被称作这个类的伴生对象(companion object)。必须在同一个源码文件中定义类和类的伴生对象。同时,类又叫作这个单例对象的伴生类(companion class)。类和它的伴生对象可以互相访问对方的私有成员。


6、单例对象并不仅仅用来存放静态方法。它是一等的对象。可以把单例对象的名称想象成附加在对象身上的“名字标签”:定义单例对象并不会定义类型(在Scala的抽象层级上是这样的)。当只有ChecksumAccumulator的对象定义时,并不能定义一个类型为ChecksumAccumulator的变量。确切地说,名为ChecksumAccumulator的类型是由这个单例对象的伴生类来定义的。不过,单例对象可以扩展自某个超类,还可以混入特质,可以通过这些类型来调用它的方法,用这些类型的变量来引用它,还可以将它传入那些预期这些类型的入参的方法当中。


7、要运行一个Scala程序,必须提供一个独立对象的名称。这个独立对象需要包含一个main方法,该方法接收一个Array[String]作为参数,结果类型为Unit。任何带有满足正确签名的main方法的独立对象都能被用作应用程序的入口。


8、Scala在每一个Scala源码文件都隐式地引入了java.lang和scala包的成员,以及名为Predef的单例对象的所有成员。Scala和Java的区别之一,是Java要求你将公共的类放入跟类同名的文件中(例如需要将SpeedRacer类放到SpeedRacer.java中),而在Scala中可以任意命名.scala文件,不论你放什么类或代码到这个文件中。不过,通常对于那些非脚本的场景,把类放入以类名命名的文件是推荐的做法,就像Java那样,以便程序员能够更容易地根据类名定位到对应的文件。


9、Scala的分发包还包含了一个名为fsc的Scala编译器的守护进程。第一次运行fsc,它会创建一个本地的服务器守护进程,绑定到计算机的某个端口上。然后,它会通过这个端口将需要编译的文件发送给这个守护进程。下一次运行fsc的时候,这个守护进程已经在运行了,所以fsc会简单地将文件清单发给这个守护进程,然后守护进程就会立即编译这些文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值