从Scala中的其他类导入函数

时间:2014-07-16 15:01:49

标签: function class scala import

比如说我有

class foo{
  def bar = 7
}

class qaz{
  //Here I want to have something like: val foobar = bar
  //What I don't want to have is val foobar = (new foo).bar   
}

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:8)

您可以使用foo的配套对象来定义bar

然后您只需将其导入qaz

即可
// in foo.scala
object foo {
  def bar = 7
}
class foo {
  // whatever for foo class
}

// in qaz.scala
import mypackage.foo.bar
class qaz {
  val foobar = bar     // it works!
}

答案 1 :(得分:1)

有两种方法可以实现这一目标:

  1. 使用随播对象

  2. Case Class

  3. 第二种方法,即需要包含伴侣对象的方法,如Jean已经实现的那样:

    pack

    通过创建一个case类而不是一个普通类,为你创建了很多样板代码,其中一个是apply方法的生成,因此你不需要使用new关键字来创建一个新的实例班上的。

    class foo {
    // whatever for foo class
    }
    
    //Companion Object
    object foo {
        def bar = 7
    }
    
    class qaz {
      val foobar = bar 
    }
    

    这两种方法都是一种语法糖,但在后面做同样的事情,即在伴侣对象中使用apply函数。 请尝试this了解详情。