我的Scala程序不会打印任何内容

时间:2015-06-15 07:09:25

标签: scala

基本上我正在尝试编写一个包含书籍和作者列表的程序,然后打印出两件事,res1,这应该打印出名为“Andrei”的作者的书名。它和res2应该打印带有字符串“programare”的书名。

case class Book(title: String, authors: List[String]){

  val books: List[Book] = List( 
  Book("Interpretarea programelor pe calculator", 
  List("Grigore, Alexe", "Antonio, Vucu G.")), 
  Book("Calcul diferential si integral", 
  List("Andrei, Ioan", "Anghel, Radulescu")), 
  Book("Introducere in limbajul de programare C++", 
  List("Andrei, Nicolae")),
  Book("Introducere in programarea functionala", 
  List("Dinu, Constantin")), 
  Book("Programare in limbajul Java", 
  List("Daniel, Iosif", "Gicu, Alin", "Victor, Niculescu ", "Viorel,        Andurache")))

  val res1 = for (b <- carti; a <- b.authors if a startsWith "Andrei") yield    b.title

  val res2 = for (b <- carti if (b.title indexOf "programare") >= 0) yield b.title

  def main(args: Array[String]) {

   println(res1);
   println(res2);
  }
}

2 个答案:

答案 0 :(得分:2)

所以,很多问题。

你正在做的所有事情?它在Book的构造函数中完成,并为每个实例重做。

你的主要方法?这被编译为Book的实例方法,而不是静态方法,因此它不会为可执行程序提供入口点。您可以像Dmitry建议的那样扩展Hello, <%= @name %> ,或者在伴随对象而不是类中明确定义主方法。伴随对象方法获得静态“转发器”,因此您最终会得到所需的主方法。

哦,scala不会从英语编译成罗马尼亚语,所以如果你将变量命名为App,那么for comprehensions就不能用books作为它!

carti

答案 1 :(得分:1)

使用scala.App trait作为主类,如

object Test extends App {
    println("anything")
}