2016-10-15 81 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”的情况下编写它。每次使用之前? –