调用内部对象外部的同名函数?

时间:2013-12-01 15:01:04

标签: scala

当我在对象内部使用与外部函数不同的名称时,程序可以正常工作。 例如:

scala> trait Dog {
     | def tag = 123
     | object Cat {
     | def tag2 = tag}
     | }
defined trait Dog

scala> object Foo extends Dog
defined module Foo

scala> Foo.tag
res0: Int = 123

scala> Foo.Cat.tag2
res1: Int = 123

但是,将两个函数命名为同名中断。我可以使用对象标记中的函数调用外部函数标记吗?感谢。

实施例

trait Dog {
         | def tag = 123
         | object Cat {
         | def tag = tag}
         | } //doesn't work

1 个答案:

答案 0 :(得分:4)

您可以为外部类提供this的替代名称:

trait Dog { fido =>
  def tag = 123
  object Cat { def tag = fido.tag }
}