文档章节

Chapter 5 -- Scala for the Impatient

翟志军
 翟志军
发布于 2015/02/23 11:45
字数 357
阅读 28
收藏 0

##define class // default public class Counter {

    private var value = 0
    def increment() {value += 1}
    def current() = value

}

##using class val myCounter = new Counter myCounter.increment() println(myCounter.current) // you can ignore the bracket if the method of instance is not side effect

##getter and setter which is generated to field val/var name public name/ name_= ( for var)

@BeanProperty val/var name public name / getName() / name_= (for var) / setName(..) (for var)

private val/name private name / name_= (for var)

private[this] val/var name -

private[class name] val/var name dependents on implementation

auxiliary constructor

class Person {
    private var name = ""
    private age = 0

    def this(name: String){
        this() // call primary constructor
        this.name = name
    }

    def this(name: String, age: Int) { // another auxiliary constructor
        this(name)
        this.age = age
    }

}

val p1 = new Person  // call primary constructor
val p2 = new Person("name")  // call auxiliary constructor
val p3 = new Person("Fred", 32) // call auxiliary constructor

primary constructor

class Person(val name: String, val age: Int){
    //primary contructor will execute all code that are included in this scope
}


//above equals java code:
public class Person{
    private String name;
    private int age;
    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }

    //getter...
    //setter...
}

##getter and setter which is generated to primary constructor scala's getter is "name" and setter is "name_=(...)"

java's getter is "getName()" and setter is "setName(..)"

name: String private object field. It'll be not exists if it isn't used.

private val/var name: String private field, private setter and getter method

val/var name: String private field, public setter and getter method

@BeanProperty val/var name: String private field, public scala/java setter and getter method

inner class

import scala.collection.mutable.ArrayBuffer
class Network {
    class Member(val name: String){
        val contacts = new ArrayBuffer[Member]
    }
    private val members = new ArrayBuffer[Member]

    def join(name: String) = {
        val m = new Member(name)
        members += m
        m
    }
    
}

val chatter = new Network
val myFace = new Network

val fred = chatter.join("Fred")  // the type of fred is chatter.Member
val wilma = chatter.join("wilma") 
fred.contacts += wilma
val barney = myFace.join("Barney") // the type of barney  is myFace.Member
fred.contacts += barney // invalid cause the type of fred and barney is differents                            

© 著作权归作者所有

共有 人打赏支持
翟志军

翟志军

粉丝 347
博文 76
码字总数 79851
作品 2
深圳
程序员
私信 提问
Spark和Scala的网络资源汇集

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/51194023 Spark和Scala的网络资源汇集 作者:chszs,未经博主允许不得转载。经...

chszs
2016/04/19
0
0
《Programming in Scala》读书笔记

不得不感叹一下,这本书真的是神作,不愧是Scala语言作者自己写的书。整个书的内容条理非常清晰,对于有些地方的设计也给出了具体的原因,能让你对整个语言有更好的把握。深入学习Scala必读书...

mj4738
2012/01/03
0
0
scala 学习笔记(scala for the impatient)

很久没有写东西了,突然想写点什么,还感觉不怎么适应,呵呵,随便写点吧,话不多说,进入主题吧。 scala 融合了面相对编程和面向对象编程的思想,现在java8出世了,其中的lambda表达式和sca...

xinyitianii
2014/03/30
0
0
快学Scala 第18章 高级类型 习题解答

实现一个Bug类,对沿着水平线爬行的虫子建模。move方法向当前方向移动,turn方法让虫子转身,show方法打印出当前的位置。让这些方法可以被串接调用。例如: bugsy.move(4).show().move(6).s...

圣洁之子
2015/05/04
0
1
16 本优秀的免费 Perl 图书

个人如想学习和进一步理解Perl编程语言,他们有大量价格合适的Perl图书可供挑选。但作为一种开源的编程语言,由Perl作者Larry Wall等人写就的成千上万著作中,有许多是在自由许可证下发布,免...

oschina
2013/01/07
3.4K
15

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 其实我在地板也睡不着

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @witt-z :分享歌词: 阴天 在不开灯的房间,当所有思绪都一点一点沉淀。 分享莫文蔚的单曲《阴天》: 《阴天》- 莫文蔚 手机党少年们想听歌,...

小小编辑
17分钟前
14
3
微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
3
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
4
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部