2016-10-15 80 views
0

在我的項目的用例類有一個主要目標:斯卡拉:從主

object Main extends App { 
    println("Hello world") 
} 

和另一個問題:

object Abc { 
    abstract class BAbcTest 
    case object Meow extends BAbcTest 

    ... 


    def domeow(b: BAbcTest): BAbcTest = b match { ... } 
} 

我如何可以調用從Maindomeow?我使用sbt,當我在那裏輸入run時,它只打印「Hello World」。

我試圖在主要對象寫入domeow(Meow)但它口口聲聲說

未發現:價值喵

回答

1

只是做Abc.domeow(Abc.Meow)Main對象內。 Main中的所有內容都將在main method中執行爲Main extends App

你要做Abc.Meow序使用import Abc._Meow對象從Main對象或importAbcMain

object Main extends App { 
    println("Hello world") 
    Abc.domeow(Abc.Meow) 
    } 

或進口裏面Abc._

object Main extends App { 
    println("Hello world") 

    import Abc._ 

    Abc.domeow(Meow) 
    } 


    object Abc { 
    abstract class BAbcTest 
    case object Meow extends BAbcTest 
    def domeow(b: BAbcTest): BAbcTest = b match { case Meow => Meow } 
    } 

Abc.test(1)Main目的。

As Main extends App。 Main內的所有代碼將在對象Mainmain方法內執行。所以當你做sbt run對象Main內的所有代碼都會執行。

object Main extends App { 
    println("Hello world") 
    println(Abc.test(1)) 
} 

object Abc { 
    def test(a: Int): Int = a match { ... } 
} 

斯卡拉REPL

scala> object Abc { 
    def test(a: Int): Int = a match { case 1 => 1} 
    } 
defined object Abc 

scala> object Main extends App { 
    println("Hello world") 
    println(Abc.test(1)) 
    } 
defined object Main 

scala< Main.main(Array("")) 
Hello world 
1 
+0

好了,現在我想通了,這是所有關於我使用的情況下,類 - 在這個任何想法? –

+0

@今天春天編輯it ..這有幫助嗎? – pamu

+0

非常有幫助 - 沒有一種方法可以在沒有「Abc」的情況下編寫它。每次使用之前? –