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

我可能没有这个问题的正确词汇,但我正在理解函数式编程的一个基本概念。 感谢您的阅读!

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

使用可变变量,你可以做这样的事情:

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美元,而Bob在t1存款5美元,那么玛丽在t2检查余额,她看到5,那就是她看到了鲍勃动作的效果。

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

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

链接地址: http://www.djcxy.com/p/80851.html

上一篇: shared data without using mutable variables

下一篇: Functional programming with clojure, avoiding mutable state