11

私は次のコードを持っています:(src / main / scala / coins / coins.scala)

object Main extends App { 

  def countChange(money: Int, coins: List[Int]): Int = {
  [...]

そして、私は次のようなテストからそれを参照しようとしています:(src / test / scala / coins / CoinsSuite.scala)

package coins

import org.scalatest.FunSuite

class CoinsSuite extends FunSuite {

  import Main.countChange
  test("only onw way to pay $0") {
  [...]

そして、次のエラーが発生します。

見つかりません:value Main [error] import Main.countChange

しかし一方で、sbtコンソールからは正常に動作します

メインファイルでパッケージを宣言すると、

package x

object Main extends App { 
  Console.println("Hello World!")

次に、importx.Main.countChangeを正しく発行できます

ルートパッケージまたは私が気付いていないシングルトンオブジェクトの可視性に制限はありますか?

- 追加した

答えを完成させるために、SOのいくつかの便利なリンク

https://stackoverflow.com/a/2030159/47633

https://stackoverflow.com/a/9822212/47633

https://stackoverflow.com/a/9822227/47633

4

1 に答える 1

11

Java(および同じ規則によるとScala)は、名前のないパッケージにあるものをインポートすることに不機嫌です。これは、ルートパッケージと同じものではありません。Mainパッケージに入れます。

別のソースファイルにある場合、オブジェクトがパッケージ<root>のメンバーではないのはなぜですか?を参照してください。

于 2012-10-06T20:25:08.000 に答える