共享数据而不使用可变变量

时间:2017-12-18 04:33:04

标签: functional-programming

我可能没有这个问题的正确词汇,但我希望了解函数式编程的基本概念。谢谢你的阅读!

如果您编写的是与多个消费者交互的纯功能程序,那么如何为共享信息建模?使用银行帐户的示例...

使用可变变量,您可以执行以下操作:

class BankAccount {

  private var bal: Int = 0

  def balance: Int = bal

  def deposit(amount: Int) {
    bal += amount
  }

  def withdraw(amount: Int) {
    bal += amount
  }
}

因此,如果在t0时余额为0美元而鲍勃在t1处存入5,则玛丽在t2检查余额,她看到5,那就是她看到鲍勃行动的影响。

如何使用函数式编程实现这一点,其中变量应该是不可变的?我可以理解,对于单个消费者,Bob,您可以返回BankAccount的 new 实例,余额为5.但是对于第二个消费者,Mary,如何她会访问这个新的BankAccount 吗?

从概念上讲,人们可以将平衡视为一种随时间变化的状态,而是存在一个不可变的balance_t0 = 0和一个不可变的balance_t1 = 5.但要做到这一点,你仍然需要一些方法来使用编程语言命名每个时间点的余额......

0 个答案:

没有答案