相关疑难解决方法(0)

在这些情况下,Scala值类将被"装箱",对吧?

如果我有这个值类:

class ActionId(val value: Int) extends AnyVal
Run Code Online (Sandbox Code Playgroud)

那么,在下面的所有例子中,将为值类分配一个对象?(它将被"装箱" - 它不会简单地打开到一个普通的32位整数,对吧?)

  1. 一个返回值类的函数 - 值类会转义范围,因此会被"装箱"?

    def someFunction(): ActionId = {
      ...
      return ActionId(123)
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 返回具有值类成员的对象的函数- 值类会转义范围,因此将"装箱"?

    case class Post(id: ActionId, ...) { ... }
    
    def someFunction(): Post = {
      ...
      val somePost = Post(ActionId(123), ...) // ActionId will be "boxed", right?
      return somePost
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 即使一个值类成员的对象在返回(并没有真正逃脱的范围),该值类仍然会"盒装",当它被用作另一个类的成员(作为一个字段Post级,在这个例子中)?

    def anotherFunction() {
      ...
      val somePost = Post(ActionId(123), ...) // "Boxed" here too, right?
    
      // ... do …
    Run Code Online (Sandbox Code Playgroud)

memory-management scala

8
推荐指数
2
解决办法
1758
查看次数

标签 统计

memory-management ×1

scala ×1