3

私はscalaを学んでおり、scalaのスタイルガイドの公式ドキュメントを見ています。しかし、なぜ同じ表現が同時に励ましと落胆を意味するのか、私は混乱しています。scala スタイル ガイド
によると、最初は間違っていますが、例の真ん中にある 2 番目は正しいです。package coolnesspackage coolness

// wrong! this is definitely wrong
package coolness

// right! puts only coolness._ in scope
package com.novell.coolness

// right! puts both novell._ and coolness._ in scope
package com.novell
package coolness //but why is it OK?

// right, for package object com.novell.coolness
package com.novell
/**
 * Provides classes related to coolness
 */
package object coolness {
}

解決済み: 2 行を超えるパッケージ宣言が、ドット区切りの 1 行宣言と同じであることを知りませんでした。

といえば、 package com.novell.coolness同じですpackage com.novell; package coolness

4

2 に答える 2

5

引用したコードのすぐ上に、パッケージ名はJavaパッケージの命名規則に従う必要があると書かれています。Java パッケージの命名規則では、パッケージ名はグローバルに一意である必要があり、これは、パッケージ作成者の管理下にあるインターネット ドメイン名をパッケージ名のプレフィックスとして使用することで達成されると規定されています。

たとえば、ドメインを制御する場合example.com、パッケージのように任意のパッケージ名を使用できますcom.example._が、com.microsoft.coolness.

com.novell.coolness上記のルールに従っているため (あなたが Ray Noorda であると仮定して)、問題coolnessありませんが、そのルールに従っていないため (または、そのルールに従っている場合は、あなたがあなたが.ICANN でない限り、これはほぼ確実に真実ではありません)。

これは実際には Scala に関する質問ではなく、Java パッケージの命名規則に関する質問であり、Scala スタイル ガイドが従うことを推奨しています。

于 2018-11-24T05:14:49.617 に答える