我对Scala非常高兴,所以我要做的是执行一个函数,该函数将先前创建的列表作为参数获取。然后我通过整个列表读取小写的每个元素来查找关键字。
最后,我计算这个单词的次数并返回值。我的项目是作为Scala类创建的,顺便说一句,在我的代码中,它似乎是小写的,它不能读取小写中的每个列表元素。
如果我将所有代码移到一个有效的函数之外,但我不明白为什么在函数方法中它不会通过。
请伙计们,帮我解决一下,谢谢 AU
代码:
object practiqueI extends App{
//exercise 1
/* val liste = List(15,39,22,98,37,19,5)
var z : Int = 0
for (i <- liste){
z = z + i
}
println("the total is:",z)*/
//exercise 2
val list_txt = List("Introduction à la programmation ",
"Practique de la programmation",
"Structure de données",
"principe de la programmation",
"Algorithme","Langages de programmation")
def wordrepeted(some: _*) : Int = {
var counter_word:Int = 0
var counter_nword: Int =0
val word_cle: String = "programmation"
var exist_word: Boolean = false
for (i <- some) {
var test: String = i.toLowerCase
if (test.contains(word_cle)) {
counter_word += 1
exist_word = true
} else {
counter_nword += 1
}
}
return counter_nword
}
wordrepeted(list_txt)
}
答案 0 :(得分:3)
好吧,首先,如果您想要获取字符串列表的方法,那么它应该如下所示:
def myMethod(someList: List[String]) = {...}
其次,scala的List
提供了查看find()
,exist()
,count()
等元素的方法。我强烈建议您使用它们。这些方法将布尔函数作为参数。铁。检查列表是否包含包含某个子字符串的元素将如下所示:
someList.exists(s => s.contains("programmation"))
计算包含该子字符串的元素非常相似:
someList.count(s => s.contains("programmation"))
第三件事,你不需要在Scala中使用return
语句,最后一个表达式被视为返回值。
所以基本上计算包含子字符串的元素的方法看起来像是:
def countElements(allElements: List[String], substring: String): Int =
allElements.count(s => s.toLowerCase.contains(substring.toLowerCase))
看起来你对其他编程语言有一些经验,但Scala对你来说很新鲜。在进行这样的练习之前,我真的建议您阅读一些教程,例如:https://www.tutorialspoint.com/scala/index.htm只是为了了解Scala中有些东西是如何工作的,因为它有很多语法糖和有用的“快捷方式”。