基本上我正在尝试编写一个包含书籍和作者列表的程序,然后打印出两件事,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);
}
}
答案 0 :(得分:2)
所以,很多问题。
你正在做的所有事情?它在Book的构造函数中完成,并为每个实例重做。
你的主要方法?这被编译为Book的实例方法,而不是静态方法,因此它不会为可执行程序提供入口点。您可以像Dmitry建议的那样扩展Hello, <%= @name %>
,或者在伴随对象而不是类中明确定义主方法。伴随对象方法获得静态“转发器”,因此您最终会得到所需的主方法。
哦,scala不会从英语编译成罗马尼亚语,所以如果你将变量命名为App
,那么for comprehensions就不能用books
作为它!
carti
答案 1 :(得分:1)
使用scala.App trait作为主类,如
object Test extends App {
println("anything")
}