《Scala by Example》第11章 变化的状态

  本章里,将会引入副作用(side effects)并研究它们的行为。我们最终会看到要从基本上修改我们之前写过的代码。

11.1 有状态的对象

  通常,“状态”是跟一系列的可以按一定计算方法变化的变量相关联的。有一个更为抽象的关于“状态”的概念(notion):如果一个对象的行为受它的历史影响,这个对象就是有状态的。

  如,一个银行帐户就是一个“有状态”的对象。因为帐户里的钱的数目是会随时间变化而有不同。

  在Scala里,所有变化的状态最终都是从变量得到的。用var来定义。

  在Scala里,每个被定义的变量要在定义的时候给一个初始化的值。例如像 var x : Int 这就不是一个变量定义,因为没有初始值。如果不知道或者不关心,则可以用通配符来表示: val x : T = _ 

  真实世界里的对象在Scala里用含有变量成员的对象来表示。如,表示银行帐户:

class BankAccount {

  private var balance = 0 

  

  def deposit(amount : Int) {

    if (amount > 0) balance += amount

  }

  

  def withDraw(amount : Int) : Int = 

    if ( 0 < amount && amount <= balance){

      balance -= amount

      balance

    }

    else error("insufficient funds")

}

相等和变化:如果val x = new BankAccount ; val y = new BankAccount 则X和Y不是相同的对象。但如果val x = new BankAccount ; val y = x ,则是相等的。

11.2 指令式控制结构

  像While循环就是一种指令式结构。Scala鼓励多使用函数式的结构。

11.3 扩展:离散事件模拟。书上有同样的例子,略过。

 

  

你可能感兴趣的:(example)