gpt4 book ai didi

scala - Scala 的第一步

转载 作者:行者123 更新时间:2023-12-01 07:11:16 25 4
gpt4 key购买 nike

这些天我正在尝试学习 Scala。

我对 _ 感到困惑运算符(operator)。
如何在以下程序中使用它?

还有如何让这个程序更简洁?

我了解到 scala 提倡使用 valvar , 在这种情况下我们如何使用 valbalance ?

private object Main {

def main(args: Array[String]): Unit = {
val acc1 = new PiggyBank(5)
acc1.printBalance
acc1 deposit 5
acc1.printBalance
acc1 withdraw 5
acc1.printBalance
}
}

private class PiggyBank(open_Bal: Int) {
var balance = open_Bal
def deposit(value: Int) = balance = balance + value
def printBalance = println(balance)
def iswithdrawable(value: Int) = balance >= value
def withdraw(value: Int) = {
if (iswithdrawable(value)) {
balance = balance - value
}
}
}

提前致谢 :)

最佳答案

您可能会在这里得到一百万个答案:) 但是,根据您问题的内容,您需要阅读一本书。我推荐 Programming in Scala 2nd Edition .我已经读了两遍了,在这个过程中,它变得有棱角和咖啡渍。

我这样说的原因是因为 Scala 为您提供了一个新的范例,而您正在 Scala 中编写 Java 代码。这对初学者来说完全没问题,但你不会以这种方式学习你想学习的东西。这本书是一个很好的开始,它将为您提供学习更多知识的基础。

例如,这是我要在您的代码中更改的内容:

case class PiggyBank(balance: Double) {
def deposit(amount: Double) = PiggyBank(balance + amount)
def withdraw(amount: Double): Option[PiggyBank] = {
if (balance >= amount) Some(PiggyBank(balance - amount))
else None
}
override def toString() = balance.toString
}

但我认为“为什么”我想这样做才是真正的问题,而这正是你真正需要回答的问题。简而言之,它是不可变的,而且功能更强大(尽管这是一个玩具示例,这里还有很大的改进空间),但为什么会这样,我们为什么要关心?书籍回答了这个问题。

鉴于此,您可以开始使用 _如果你愿意的话,一点点。例如:
val result = PiggyBank(500) withdraw 200 flatMap { _.withdraw(200) } 
println(result.getOrElse(0))

但是,如果你像大多数菜鸟一样(就像很久以前的我一样),你会问“为什么这更好?”。这不是您将在快速 SO 帖子中找到的答案。我可以继续继续,但最重要的是,有些书已经做到了这一点,而且做得比我做得更好。

关于scala - Scala 的第一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9581444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com