随笔分类 - scala
摘要:```
// 当遇到如下形式的表达式时,apply方法就会被调用
// Object参数1,...,参数N)
// 通常这样一个apply方法返回的是伴生类的对象
class Accont private (val id: Int, initialBanlance: Double){ private var balance = initialBanlance
}
object Accont{
...
阅读全文
摘要:```
// 在java中你通常会用到既有实例方法又有静态方法的类
// 在scala中你可以通过类和与类同名的伴生对象来达到同样的目的
// 类和它的伴生对象可以相互访问私有特性.他们必须存在于同一个源文件中.
class Account{ val id = Account.newUniqueNumber() private var balance = 0.0 def deposit...
阅读全文
摘要:```
object Accounts { private var lastNumber = 0 def getUniqueNumber() = { lastNumber ++ 1; lastNumber } // 对象的构造器在该对象第一次被使用时调用 // 对于任何你会使用单例对象的地方,在scala中都可以用对象来实现: // 作为存放工具函数或常量的地方 // 高效...
阅读全文
摘要:针对主构造器参数生成的字段和方法 主构造器参数 | 生成的字段或方法 | name:String | 对象私有字段.如果没有方法使用name,则没有该字段 private val/var name:String | 私有字段,私有的getter/setter方法 val/var name:Strin
阅读全文
摘要:```
class Person { /* 1.辅助构造器的名称为this. 2.每一个辅助构造器的第一行必须调用其他辅助构造器或者主构造器. */ //如果一个类没有显式定义主构造器则自动拥有一个无参的主构造器 private var name = "" private var age = 0 def this(name: String){ this...
阅读全文
摘要:scala语言中没有static成员存在,但是scala允许以某种方式去使用static成员这个就是伴生机制,所谓伴生,就是在语言层面上,把static成员和非static成员用不同的表达方式,class和object,但双方具有相同的package和name,但是最终编译器会把他们编译到一起,这是
阅读全文
摘要:list的下标访问 map函数 添加元素 foreach 去重 累加 reduce 元组: map:
阅读全文
摘要:默认值: 可变参数: 下划线的使用: 递归函数:需要显式的给予函数的返回类型 函数柯里化: 把这个参数一个个独立开来写,这就是柯里化 柯里化就是把参数可以分开来,把部分函数参数可以用下划线来代替 匿名函数声明方式 :后面是数据类型,c代表传进来的参数 匿名函数 匿名函数作为参数,其实就是参数名,后面
阅读全文
摘要:一、条件表达式 在scala中if/else表达式有值,这个值就是跟在if或者else之后的表达式的值。 在scala中每个表达式都有一个类型。举例来说,表达式if(x>0) 1 else -1的类型是Int,因为两个分支的类型都是Int. 混合表达式的类型是两个分支的类型的公共超类型。例如if(x
阅读全文
摘要:一、算术和操作符重载 a + b 是如下方法的简写: a.+(b) 在scala中你可以使用任何符号来为方法命名。比如BigInt类就定义了一个/%的方法,该方法返回一个对偶,对偶的内容是除法操作得到的商和余数。 通常来说,你可以用 a 方法 b 作为以下代码的简写 a.方法(b) 这里的方法是一个
阅读全文
摘要:一、REPL scala解释器读到一个表达式,对它进行求值,将它的打印出来,接着再继续读下一个表达式。这个过程被称作 读取-打印-循环,即REPL。 从技术上讲,scala程序并不是一个解释器。实际发生的是,你输入的内容被快速的编译成字节码,然后这段字节码交由java虚拟机执行。正因如此,大多数sc
阅读全文