为什么将包级别的defs / types / implicits放在文件的根级别是非法的?

时间:2014-03-13 16:28:45

标签: scala packages

自从我开始使用Scala以来,这个问题一直困扰着我。所以,这是我的思路:

  1. Scala没有Java的要求,一切都必须在一个类中 - 这是一件好事!
  2. Scala具有函数,即没有类/对象的方法
  3. 包是对象,因此如果您在包中定义一个类,它将进入包对象
  4. 有些事情必须明确地放入包装对象中,而有些事情不是 - 为什么?
  5. 我认为必须写下来才是丑陋的:

    package foo.bar
    
    object `package` {
      type Foo = Bar
      def fact(n: Int): Int = ???
    }
    

    而不仅仅是

    package foo.bar
    
    type Foo = Bar
    def fact(n: Int): Int = ???
    

    那么:是否有人知道何时/为什么决定要求使用(否则是隐式的)包对象进行显式包装?我不断发现自己被晦涩的object package声明所引入的额外级别的缩进和样板片烦恼了,这很烦人,原因与Java中令人讨厌的原因相同:

    class MyMath {
        public static int fact(int n) { ... }
    }
    

0 个答案:

没有答案