Programming In Scala Reading Note 3

Class and Object

class TestClass {
  val some = 1
}

生成的class文件中会包含一个some()方法,并且这个方法是public的,也就是说类外可以通过类的对象来获取这个some的值

修改:

class TestClass {
  private val some = 1
}

会生成一个private的some()方法,返回值也是some。但是现在类外是访问不到的

类的方法的参数默认是val类型的

副作用大部分用来修改一个属性的值或者开关一个I/O,只存在副作用的话返回值为Unit,这个时候应该省去:Unit =,用{}把方法体包含起来即可。

如果一个方法是有返回值的,务必不要丢掉=,否则,这个方法的返回值为Unit,因为任何类型都能够被转化成为Unit。

分号语法:

如果算数运算不在一行上面,那么我们应该在每一行的末尾最佳运算符,而不是在每一行的开头追加,因为+a返回的是a,而不是让一个值去加上a。

伴生对象一定要放到同一个文件当中。伴生类和伴生对象之间可以互相访问彼此的私有变量。

伴生对象与伴生类的一个区别是,伴生对象没有构造参数,因为不能实例化一个伴生对象

Scala程序

Scala程序就是一个object,或许是伴生对象(companion object)亦或是孤立对象(standalone object)。

这个对象中必须要有一个名称为main的,返回值为Unit的,具有合适签名(参数为Array[String])的方法。

如果一个scala文件是以一个定义结束的,而不是一个结果表达式,那么他就是一个object,不然的话就是一个script(脚本)。

无论如何应该了解一下:

scalac 用来编译(interpret).scala文件成.class文件

scala 用来运行程序

  1. script文件的话,需要带上.scala
  2. object文件的话,已经被编译了,不需要带上.scala

fsc(fast Scala Compiler) 能够开启一个守护线程,并且分配一个端口号,用来专门编译scala文件,这样第一次比较慢,以后会快很多

fsc -shutdown 用来关掉这个守护线程

scalac的问题在于,每次执行的时候都会启动编译器,且花费时间去扫描所有的jar文件,以及一些其他的准备工作,然后才会去执行编译工作。

Programming In Scala Reading Note 3

时间: 2024-10-26 16:21:43

Programming In Scala Reading Note 3的相关文章

Programming In Scala Reading Note 7

函数和闭包 1 成员方法 java中函数存在的方式,我们给一个类追加一个功能的途径就是给他追加一个方法. 2 本地方法 所谓的本地方法就是存在于一个方法内部的方法. 如果一个类中有一个方法是private的,且只有一个方法使用到他,那么这个方法完全可以被定义为一个本地方法 3 函数式一等公民 方法分为: 1 方法名称 def add 2 方法参数 (a:Int, b:Int) 3 赋值符号 = 4 方法体 a + b 其实,(a:Int, b:Int) => a + b,就构成了一个基本的函数了

Programming In Scala Reading Note 1

Chapter1 and Chapter2 方法定义: def methodName(param1: ParamType, param2: ParamType2, [maybe more]): ReturnType = { // method body } 函数式编程中一个约定俗成的说法就是,方法会返回一个值,不然一个方法的存在就是在产生副作用,而避免副作用是函数式编程的一个初衷. 数组的访问: scala中的数组是Array[ContentType],声明一个数组的时候需要指定数组的大小和所包

Programming In Scala Reading Note 8

AJAX XMLHttpRequest,是AJAX得以实现的基础 他是一个对象,有几个需要记住的方法和属性: XMLHttpRequest方法 open(method, url, async, username, password) method: post或get url: 请求地址 async: boolean,默认为ture,是否异步? 后面的基本上没啥意思... send(content) xmlHttpRequest调用了open方法之后,并没有真正发生一个请求事件. send执行的时

Programming In Scala Reading Note 6

Built-in Control Structures 内置控制结构 1 if 控制结构 scala的if跟java的if结构上相同,功能上也差不太多,scala的说法是,if能够返回一个值 val fileName = if (!args.isEmpty) args(0) else "default.txt" 这个语句相对普通,但是这里没有引入一个var,而是使用的val. println(fileName) 等价于 println(if (!args.isEmpty) args(0

Programming In Scala Reading Note 4

Basic Types and Operations Something new according to Java 1 + 2 跟 (1).+(2) 是一样的. val str = "Hello world" str indexOf 'o' 跟 str.indexOf('o')是一样的 indexOf有两种形式的参数,int和str,其中这个int就是用来确定是否存在一个char的.... Any method can be an operator 这句话应该这么理解,str.ind

Programming In Scala Reading Note 2

Learn to programming in funtional way 如果一个方法中存在var的话,那么这个方法很可能就是指令式编程. 如果一个方法中只存在val的话,那么这个方法很可能是函数式编程. 我们需要尝试着把方法中的val删除掉. 副作用,一个方法满足函数式编程的基本要求,但是返回值是一个Unit的话,那么可以肯定这个方法是有副作用的. 而我们应该避免让一个方法有副作用. 不产生副作用就不会对我们有意义,于是我们需要最小化副作用,让每一个方法都干一件事儿,返回给我们一个值. Pr

Programming In Scala Reading Note 5

Functional Object Advantages and Disadvantages of Immutable Object Adv 1. 不可变对象更具容易被推断出来,因为它不会随着时间的变化而造成值的变化. Adv 2. 不可变对象可以自动地传递不会发生变化,而传递可变对象的话,需要首先对可变对象进行备份,以防止在其它过程中对对象的状态造成了修改. Adv 3. 线程不能够更改(corrupt:腐化,堕落)不可变对象的状态,注定他是线程安全的. Adv 4. 不可变对象拥有安全的Ha

thinking in java ----reading note (1)

# thinking in java 4th# reading note# victor# 2016.02.10 chapter 1 对象入门 1.1 抽象的进步    (1) 所有东西都是对象.    (2) 程序是一大堆对象的组合,对象间通过消息联系.    (3) 通过封装现有对象,可制作出新型对象.    (4) 每个对象都有一种类型(某个类的实例).    (5) 同一类的所有对象都能接受相同的消息.    1.2 对象的接口 & 1.3 实现方法的隐藏     接口规定了可对一个特定

jQueryInAction Reading Note 7.

jQuery插件命名规则 jquery.pluginName.js pluginName指代的是插件的名称,如voctrals,tlaliu或者更有意义的名称. 简化jQuery函数的参数列表 如果有一个函数有多个参数,但是并不是每一个参数都是必须的,可以把必须的参数放到前面,不必须的参数包装成一个object. 如: function complex(param, options){ var settings = $.extend( { option1 : defaultValue1, opt