【问题标题】:If scala case class and object have same name, how to import case class only如果scala案例类和对象同名,如何只导入案例类
【发布时间】:2014-08-06 11:41:27
【问题描述】:

我有一个包含这两个元素的 scala 类 Foo.scala

第一个,

case class Foo(
.
.
.
)

其次,

object Foo{
.
.
.
}

现在当我在其他文件中导入 Foo 时,我想使用案例类而不是 Object,但是当我导入文件时,在 Foo 中返回对象实例

无论如何我可以让 Foo 充当案例类,然后充当对象。

【问题讨论】:

  • 您是否有可能更改 case classobject 中任何一个的名称?
  • 不,不能,不能更改对象/案例类名,因为我正在使用遗留代码,所以不知道我的更改还会影响代码库。
  • 是的,很相似,感谢@shyamendra-solanki 的链接,它帮助很大。

标签: scala


【解决方案1】:

你可以试试这个

 (Foo.apply _).tupled

【讨论】:

    【解决方案2】:

    您的 scala 命名空间有歧义。该问题的一个简单解决方案是将案例类嵌套在对象内,然后将其导入

    import Foo.Foo

    另一种解决方案是将它们放在单独的包中。根据你的系统设计,这可能会影响你的包的凝聚力,在我看来这可能更重要。

    【讨论】:

    • 是的,案例类和对象名称不应该相同,而且它是遗留代码,不是我的工作,所以我不能像你建议的那样改变它们的位置。
    • 如果你不能改变他们的位置,那一定意味着其他人依赖于导入,这意味着有人已经想出了如何导入案例类而不是对象?跨度>
    • 似乎有解决我的问题的方法,此链接中的解决方案 ===> stackoverflow.com/questions/22367092/… 正如 shyamendra 指出的那样
    猜你喜欢
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    相关资源
    最近更新 更多