Есть ли существенная разница между объявлением класса обычно и в объекте пакета? - PullRequest
7 голосов
/ 02 января 2012

Если у меня есть пакет com.example, я могу создать класс в этом пакете следующим образом:

package com.example {
  class MyClass
}

или как это:

package com {
  package object example {
    class MyClass
  }
}

В обоих случаях результирующий класс (по крайней мере, в отношении другого кода Scala) com.example.MyClass.

Конечно, есть случайные различия. В первом случае результирующий скомпилированный класс равен com/example/MyClass.class, тогда как во втором - com/example/package$MyClass.class, но есть ли существенные различия?

Ответы [ 2 ]

5 голосов
/ 02 января 2012

Разница в именах сгенерированных файлов классов обсуждалась на scala-internals и, надеюсь, исчезнет в Scala 2.10.

0 голосов
/ 02 января 2012

Единственная причина, по которой я могу придумать, состоит в том, что вместо того, чтобы помещать только class es, object s или type s в пакет , вы можете поместить def s, val с и var с в объекте .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...