gpt4 book ai didi

scala - 使用scala初始化不同的样式对象

转载 作者:行者123 更新时间:2023-12-04 15:53:29 28 4
gpt4 key购买 nike

当我使用 java 时,有一些类似双括号初始化的东西实际上会在运行时进行一些权衡。在 Scala 中,我发现了启动对象属性的简单方法,例如

val button1: Button = new Button
button1.setText("START")
button1.setPrefWidth(100)

可以改写为
val button2: Button = new Button {
setText("PAUSE")
setPrefWidth(100)
}

这些对性能或其他方面有什么影响吗?

最佳答案

不同之处在于,在第一种情况下,您实例化了一个新的 Button对象并将其属性设置为一些值(文本 = "START"和宽度 = 100),在第二种情况下,您创建一个从 Button 继承的匿名类。并在其匿名初始化程序(或构造函数,不确定 - Java 的匿名类不能有构造函数)中初始化其属性。

第二种情况大致可以这样改写(如果不是匿名类):

class MyButton extends Button {
//constructor
setText("START")
setPrefWidth(100)
}

当您调用 new MyButton 时你得到一个 MyButton 的实例文本设置为“START”,prefWidth 设置为 100。

如果您有 Java 背景,请考虑以下类比:
Button button = new Button() {
//anonymous initializer
{
setText("START");
setPrefWidth(100);
}
};

关于scala - 使用scala初始化不同的样式对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22486915/

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