gpt4 book ai didi

scala - 不确定方法在 scala 类中如何工作

转载 作者:行者123 更新时间:2023-12-04 18:12:05 24 4
gpt4 key购买 nike

我正在尝试理解以下类中的 add 方法,该方法取自《Scala 编程 - 第二版》一书。
这个对吗 :
'add' 采用的方法定义了一个 Rational 类型的运算符。我不知道新 Rational 中发生了什么:

numer * that.denom + that.numer * denom,
denom * that.denom

numer 和 denom 是如何在这里分配的? , 为什么每个表达式用逗号分隔?
全类:
class Rational(n: Int , d: Int) {

require(d != 0)

private val g = gcd(n.abs, d.abs)
val numer = n / g
val denom = d/ g

def this(n: Int) = this(n, 1)

def add(that: Rational): Rational =
new Rational(
numer * that.denom + that.numer * denom,
denom * that.denom
)

override def toString = numer +"/" + denom

private def gcd(a: Int, b: Int): Int =
if(b == 0) a else gcd(b, a % b)
}

最佳答案

这两个表达式是 Rational 的参数。构造函数,因此它们将是 private val小号 nd分别。例如

class C(a: Int, b: Int)
val c1 = new C(1, 2) // here 1, 2 is like the two expressions you mention
add方法实现有理数加法:
 a     c     a*d     c*b     a*d + c*b
--- + --- = ----- + ----- = -----------
b d b*d b*d b*d

在哪里
 a = numer
b = denom
c = that.numer
d = that.denom

关于scala - 不确定方法在 scala 类中如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12415275/

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