gpt4 book ai didi

scala - 如何理解Scala中的类参数

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

你是怎么理解scala中的class参数的。编译器是否会为类参数向类添加隐式字段。
喜欢

    class Rational(n:Int, d:Int){
val num = n
val den = d
override def toString = n + "/" + d
}

我们在类 Rational (n, d, num, den) 中有 4 个字段吗?如果没有,我们如何在 toString 方法中访问 n 和 d。这背后的机制是什么?

最佳答案

nd会变成private字段,除非它们只在构造函数中使用,在这种情况下它们会被优化掉。 numden也将 private字段,但他们得到 public访问器也是如此。

试试这个:

class Test(a: String) {
println(a)
}

然后编译运行 javap -private Test ,显示所有类和类的成员:
public class Test extends java.lang.Object{
public Test(java.lang.String);
}

然后尝试使用使用该参数的方法:
class Test(a: String) {
println(a)
def printa { println(a) }
}

public class Test extends java.lang.Object{
private final java.lang.String a; // <- private field
public void printa();
public Test(java.lang.String);
}

关于scala - 如何理解Scala中的类参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12151402/

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