scala 基本语法

原创 2015年07月09日 09:21:47

1.val 和var都是用来定义变量的,用val定义的变量是不可变的,初始化之后,值就固定下来。用var来定义的变量是可变的,修改多次也没关系。在scala中应该尽量优先使用val
for (i <- 1 to 3){
print(i + “,”)
}

i 是一个val ,每次循环都会产生一个新的val。这里的to 是一个方法,1 to 3 ,相当于 1.to(3)

更scala风格的方法是:
(1 to 3).foreach(i => print(i + “,”))
=> 是将左边的参数和右边的具体实现分开

scala的双重循环:
for (i <- 1 to 3; j <- 1 to 3) print((10 * i + j) + ” “)
// Prints 11 12 13 21 22 23 31 32 33

在循环体中,还可以嵌套处理语句
for (i <- 1 to 3; j <- 1 to 3 if i != j) print((10 * i + j) + ” “)
// Prints 12 13 21 23 31 32

for (i <- 1 to 3; from = 4 - i; j <- from to 3) print((10 * i + j) + ” “)
// Prints 13 22 23 31 32 33

2.Java 基本类型对应的Scala类
scala一切为对象:
val a = 20
建立了一个Scala的Int实例
scala的富封装类: RichInt,RichDouble,RichBoolean,它们可以在基本类型无法满足的时候,转换为相应的类型。

3.元组和多重赋值

元组是一个不变的对象序列,可以用逗号分开创建,下面是一个3个对象的元组
(“apple”,”blanana”,”orange”)元组是可以赋值给其他变量的。
4.字符串与多行原始字符串
scala的字符串就是java.lang.String,可以按照Java的方式使用字符串。Scala可以自动把String转换为scala.runtime.RichString
创建多行字符串”“” sdfsfsffds…….”“”

4.自适应的默认做法:
 支持脚本,无需将所有的代码都放到类里
 return是可选的。如果符合方法声明的返回类型,方法会自动返回最后求值得表达式
 分号可选
 类和方法默认是public
 优化异常
 优化javabean
 默认情况下,scala会导入 java.lang scala scala.pref(包含了类型,隐式转换,以及scala中的常用方法)
5.运算符重载

6.一些区别
 scala的赋值运算的结果是Unit, a = b =c 这样的语句在scala中是错误的。
 Java中,基本类型中 == 是比较值, 对象中 == 是比较对象是否指向同一个对象,对象比较值是否相等的时候要用equals方法。 而在scala中 ,无论类型如何,==都是比较值得大小,而如果想比较他们的引用,则需要用eq()方法
 分号是 可选的
 scala 实例方法里可以访问任何类实例的私有字段和方法,也可以限制为当前实例。
 scala中的protected
scala中被protected修饰的成员只对本类以及派生类可见。同一个包的其他类无法访问这些成员。而且派生类只可以访问本类内的protected成员。scala对派生类的保护更加严格
peckage automobile
class Vechile{
protected def checkEngine(){}
}
class Car extends Vechile{
def start(){ checkEngine() //OK}
def tow(car : Car){
car.checkEngine() //ERROR
}
def tow(vechile: Vechile){
vechile.CheckEngine() //ERROE
}
}

class GasStation{
def fillGas(vechile : Vechile)
vechile.checkEngine() //ERROR
}
}
 细粒度访问控制

 避免显示使用return

第二章scala的类

scala是一种纯面向对象的语言,不支持静态方法,但是相似功能的语法是:伴生对象(companion object)。伴生对象是一个与类相伴的单利对象,比如说Actor就是Actor类的伴生对象–在并发编程里经常用到。

1.定义字段,方法和构造函数

class CreditCard(val number : Int ,var creditLimit : Int )
它的编译结果是:
public class CreditCard extends java.lang.Object implements scala.
ScalaObject{
private final int number,
private int creditLimit,
public CreditCardd( int , int)
public void creditLimit_eq(int)publicintcreditLImit()publicintnumber()publicinttag()
}
短短的一句话,就把构造函数和成员变量交代清楚。放在类定义中的任何表达式或者可执行语句都会作为主构造函数的一部分来执行。

  1. 构造函数
     主构造函数:
     副构造函数
    副构造函数的第一句要不是调用主构造函数,要么是调用其他副构造函数,两者二选其一。
    最常用的副构造函数是this。
    class Person(val firstName:String, val lastName, String){
    private var position :String=_(下划线代表的是该类型的默认值,比如Int 就是0,Double 就是0.0 但是这些便利并不适合val 类型的变量,这些变量 不能修改,必须要在初始化的时候设定值)
    println(“Creating ” + toString())
    def this(firstName: String, lastName: String, positionHold: String){
    this(firstName, lastName)
    position = positionHold
    }
    override def toString(){
    firstName + ” ” +lastName +” holds ” + position + ” position”
    }
    }

val john = new Person(“John ” ,”Smiths”,” Analyst”)
println(john)

3.类继承
 重写方法需要加override
 只有在主构造方法才能往基类构造函数中传参数
4.单例对象
单例对象是值得是只能有一个实例的类。创建单利对象只需要使用object关键字。单实例对象无法初始化,所以不能给它的主构造函数传递参数

第一课、Scala基本语法和控制结构

1.Scala介绍      Scala 是一种把面向对象和函数式编程理念加入到静态类型语言中的混血儿。Scala 的许多不同的方面都展现了面向对象和函数式编程的熔合 2.函数式编程的两种理念 1)...

scala学习-基本语法4

类和对象2: 前面提到,Scala是面向对象的编程,且Scala不允许保护静态元素-静态方法和静态变量。意思是社么呢,就是我虽然使用Private 定义了变量,在外面我还是可以访问。package ...

scala基本语法-1

scala基本语法-1
  • hzdxw
  • hzdxw
  • 2016年07月09日 18:59
  • 813

scala 基本语法—4

scala 基本语法—4
  • hzdxw
  • hzdxw
  • 2016年07月12日 21:59
  • 571

scala基本语法及注意点

scala有两种变量: val和var,val相当于Java中的final变量,一旦被赋值就不能修改。var相当于java中的普通变量。 constant为定义常量的关键字 定义...

scala学习(2)-基本语法--for循环和if语句

上一篇博客我对scala做了最基本的讲述吧,主要是我就知道那么多,哈哈,好啦,今天我们看看在任何语言中我们用的最多的两种语句吧。一猜就中,for和if语句。 当然开始之前我们还是说一下在scala中...

scala学习-基本语法3

上接scala学习计算开始基本语法2 接上一篇的一点尾巴 第九步:读取文件操作 读取文件中的每行,读取文件,然后每行打印出来,使用相对路径,data目录里放在工程里。import scala.i...

Scala基础应用(1)- 基本语法

Scala基础应用(1)- 基本语法 本章主要讲解Scala基本语法,如何定义变量,函数,基本控制结构等。 1. 解释器 Scala可以像其它脚本语言一样,边解释边运行,但实际项目中一定是通过...
  • Topurce
  • Topurce
  • 2017年03月20日 21:23
  • 187

Scala基本语法与概念笔记

转自:   http://zionyun.github.io/dev/2014/05/09/scala-basics/  感谢原作者! Scala基本语法与概念笔记 ...
  • crxmai
  • crxmai
  • 2014年11月24日 01:23
  • 473

scala 基本语法-ok

scala 基本语法
  • hzdxw
  • hzdxw
  • 2016年07月05日 20:33
  • 1782
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:scala 基本语法
举报原因:
原因补充:

(最多只允许输入30个字)