Recently I transit to use scala to program.

scala is a functional and objected oriented language, but it has seamless java Interoperability  (they both run in JVM and freely mixed).

Compared to the java that I am familiar to,  there are some common concepts, data structure functions I often use in Scala,

They are also some kinds of distinctions from Java object oriented language.  I put here also for quick search afterwards.

 
(1)  var:  define variable;
       val: deine a constant
       e.g.
       var i = 0;      i = i + 1        // i can be changed
       val i: Int = 0       //i value is not allowed to change
 
(2) object
Everything is object;         
e.g.  even basic data structure Int   are interpreted as  abstract final class Int
 
(3)  difference between object  and  class:
Simple differences:
Object:  A singleton is a class that can have only one instance, it is like the static field and method in  the java class , but it can extend another superclass, implement interfaces,
Class is  that you can have multiple instances of a class.
 e.g.
object A extends B with C {
def f(x: Any): Any = ???
}
It declares an anonymous (inaccessible) class that extends both B and C, and creates a single instance of this class named A.
(4) Option/Some/None pattern
Scala uses option to avoid the null or null pointer problem in Java etc. 
it use values that may be present or not:  the Option[A] trait.
Some extends Option, so it inherits everything except get and isEmpty (and some other methods implemented by a case class).
None also extend option
In a word,
 Option
/ \
/ \
/ \
Some None
Option is container base which can be empty or full
While Some(x) represent full with 'x' being present in the container, None represents empty.
val a: Option[String] = Option(null) // a will be None
val b: Option[String] = Option("Hello!") // "hello"
 
(4) trait
       Similar to java's interface, it encapsulates method and field definitions. It can also be used to define object types by specifying the signature of the supported methods.
example:
 
trait Equal {
def isEqual(x: Any): Boolean
def isNotEqual(x: Any): Boolean = !isEqual(x)
} class Point(xc: Int, yc: Int) extends Equal {
var x: Int = xc
var y: Int = yc def isEqual(obj: Any) = obj.isInstanceOf[Point] && obj.asInstanceOf[Point].x == y
}

(5)  case class 

It defines abstract or concrete properties in an abstract base class (or trait) that can be referenced in all child classes.
Case classes are compared by structure and not by reference:
case class Message(sender: String, recipient: String, body: String)
val message1 = Message("jorge@catalonia.es", "guillaume@quebec.ca", "Com va?")
 
You can create a deep copy of an instance of a case class simply by using the copy method. You can optionally change the constructor arguments.
val message2 = message1.copy(sender = message4.recipient, recipient = "claire@bourgogne.fr")
 It can be used to construct the struct  data structure in c/c++
 
reference:
 
 

Scala note 1的更多相关文章

  1. Spark开发环境搭建(IDEA、Scala、SVN、SBT)

    软件版本 软件信息 软件名称 版本 下载地址 备注 Java 1.8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-dow ...

  2. How to merge Scala Lists

    Scala List FAQ: How do I merge a List in Scala? NOTE: I wrote the solutions shown below a long time ...

  3. Scala: Types of a higher kind

    One of the more powerful features Scala has is the ability to generically abstract across things tha ...

  4. <译>Spark Sreaming 编程指南

    Spark Streaming 编程指南 Overview A Quick Example Basic Concepts Linking Initializing StreamingContext D ...

  5. Beginning Scala study note(9) Scala and Java Interoperability

    1. Translating Java Classes to Scala Classes Example 1: # a class declaration in Java public class B ...

  6. Beginning Scala study note(8) Scala Type System

    1. Unified Type System Scala has a unified type system, enclosed by the type Any at the top of the h ...

  7. Beginning Scala study note(7) Trait

    A trait provides code reusability in Scala by encapsulating method and state and then offing possibi ...

  8. Beginning Scala study note(6) Scala Collections

    Scala's object-oriented collections support mutable and immutable type hierarchies. Also support fun ...

  9. Beginning Scala study note(5) Pattern Matching

    The basic functional cornerstones of Scala: immutable data types, passing of functions as parameters ...

随机推荐

  1. CSS背景图片常见属性设置

    在CSS中,图片属性的设置是必不可少的,下面介绍一下常见的图片属性: 1)背景图片插入:background-image:url(位置及名称);  //默认在父级元素内的左上角 2)背景平铺方式:ba ...

  2. ie8兼容background-size属性

    满心欢喜地写代码,最后测试兼容性的时候发现Logo图片在IE8下特别大.明显是background-size在ie8一下不兼容. 我懂得,IE8还是个孩子,我就加几句你独有的代码让你兼容吧,司空见惯了 ...

  3. libpng处理png图片(一)

    一:libpng库的编译 环境:windows10 + VS2013 需要下载:libpng, zlib两个库 下载地址: libpng:http://libmng.com/pub/png/libpn ...

  4. IOS的控制器

    控制器简单来说,就是用来做界面跳转的,类似于 Android 的Intent 1.创建一个控制器 控制器的常见的创建方式 )通过storyboard创建 //直接创建 NJViewController ...

  5. 镜像的缓存特性 - 每天5分钟玩转 Docker 容器技术(14)

    上一节我们学习了镜像的分层结构,今天讨论镜像的缓存特性. Docker 会缓存已有镜像的镜像层,构建新镜像时,如果某镜像层已经存在,就直接使用,无需重新创建. 举例说明.在前面的 Dockerfile ...

  6. “永恒之蓝"漏洞的紧急应对--毕业生必看

    早上6点多起床了,第一次起这么早,昨天晚上12点多,看到了一则紧急通知,勒索软件通过微软"永恒之蓝"漏洞针对教育网进行了大规模的攻击,而且有很多同学中招.中招后的结果如下图所示. ...

  7. 【19道XSS题目】不服来战!

    记得第一次接触xss这个概念是在高中,那个时候和一个好基友通过黑客X档案和黑客手册.第一次接触到了除了游戏以外的电脑知识,然后知道了,原来电脑除了玩游戏还可以搞这些,从此两人一发不可收拾的爱上了玩黑这 ...

  8. sql查询优化整理

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  9. Alamofire源码解读系列(十二)之请求(Request)

    本篇是Alamofire中的请求抽象层的讲解 前言 在Alamofire中,围绕着Request,设计了很多额外的特性,这也恰恰表明,Request是所有请求的基础部分和发起点.这无疑给我们一个Req ...

  10. NancyFx 2.0的开源框架的使用-HosingOwin

    Nancy框架的Owin使用 先建一个空的Web项目 然后往Nuget库里面添加Nancy包 Nancy Nancy.Owin Nancy.ViewEnglines.Spark 然后添加Models, ...