仕様9.3は次のように述べています。
標準の命名規則では、上記の定義を、パッケージpに対応するディレクトリにあるpackage.scalaという名前のファイルに配置します。
これは、バッククォート形式が標準の規則ではないことを意味します。
特にコンパイル時の相互作用に関して、十分なユーザーランドガイダンスがないことに同意します。
違いは、デフォルトのパッケージに名前を付けることができないことです。
object `package` {
def f() = println("Hi")
}
object Foo extends App {
f()
}
編集:私はバックティックを避けることを好みました(代わりにタブまたはescを押す危険性が高いため)が、コードを1つのソースファイルに入れたいというユースケースがありましたが、パッケージのネストや相対的なパッケージ化も避けたいです、したがってバックティック:
package com.github.maqicode.deprecator
object `package` {
// crashes scalac, actually
implicit class MaybeInt(val s: String) extends AnyVal {
def toInt_? : Option[Int] = if (s.isEmpty) None else convert
private def convert = try { Some(Integer.parseInt(s))
} catch { case _: NumberFormatException => None }
}
}
// lots of code, so avoid package deprecator { ... }
case class Version(major: Int, minor: Option[Int], point: Option[Int], descriptor: String)
object Version {
val version = """(\d+)(?:\.(\d+))?(?:\.(\d+))?(.*)""".r
def apply(descriptor: String): Version = {
val version(major, minor, point, rest) = descriptor
Version(major.toInt, minor.toInt_?, point.toInt_?, descriptor)
}
}
暗黙の質問に関しては、Scalaでデフォルトのパッケージを使用する人は誰ですか:テストコードで見ました。
そして、あなたは「文体以外」と言いましたか?ねえ、それはすべてスタイルについてです。
個人的には、バックティックはヒップですが、あいまいです。毎日10回余分に頭を掻く必要がある場合、年末に髪の毛が少し失われます。
OTOH、あごを引っかいて、剃る必要がないほど「うーん」行ったら、それでいいでしょう。
これはそれらのコースラの質問の1つではありませんか?