gpt4 book ai didi

scala - Scala 的 `AnyVal` s 堆栈是否已分配?

转载 作者:行者123 更新时间:2023-12-04 00:19:45 27 4
gpt4 key购买 nike

是斯卡拉 AnyVal及其子类 [可以] 堆栈分配 [如 C# 结构或 Java 原语]?我们可以像 Scala 上的 C# 结构一样创建一个自定义的堆栈分配变量吗?

最佳答案

斯卡拉:

class A {
val a: AnyVal = 1
val b: Int = 1
}

石菖蒲

javap -c A
public class A extends java.lang.Object implements scala.ScalaObject{
public java.lang.Object a();
Code:
0: aload_0
1: getfield #13; //Field a:Ljava/lang/Object;
4: areturn

public int b();
Code:
0: aload_0
1: getfield #16; //Field b:I
4: ireturn

public A();
Code:
0: aload_0
1: invokespecial #22; //Method java/lang/Object."<init>":()V
4: aload_0
5: iconst_1
6: invokestatic #28; //Method scala/runtime/BoxesRunTime.boxToInteger:(I)Ljava/lang/Integer;
9: putfield #13; //Field a:Ljava/lang/Object;
12: aload_0
13: iconst_1
14: putfield #16; //Field b:I
17: return
}

因此,正如预期的那样,显式的 AnyVal 使用会导致堆上的原语装箱。

关于scala - Scala 的 `AnyVal` s 堆栈是否已分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11446714/

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