运行 以列表作为输入的 Scala 函数
Run a function in scala with a list as input
我对 Scala 很不熟悉,所以我想做的是执行一个函数,该函数将之前创建的列表作为参数获取。然后我遍历整个列表以小写形式读取每个元素以找到关键字。
最后,我数了多少次这个词 return value.My 项目被创建为 Scala class,顺便说一句,在我的代码中似乎是小写读取小写的每个列表元素是行不通的。
如果我将我的所有代码都移到一个有效的函数之外,但我不明白为什么在函数式方法中它不能通过。
请大佬们帮忙解答一下,谢谢
澳大利亚
代码:
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)
}
好吧,首先如果你想要一个接受字符串列表的方法,那么它应该是这样的:
def myMethod(someList: List[String]) = {...}
其次,scala 的 List
提供了查看其元素的方法,如 find()
、exist()
、count()
等。我强烈建议使用它们。这些方法将布尔函数作为参数。铁。检查列表是否包含包含特定子字符串的元素将如下所示:
someList.exists(s => s.contains("programmation"))
计算包含该子字符串的元素非常相似:
someList.count(s => s.contains("programmation"))
第三件事,你不需要在 Scala 中使用 return
语句,最后一个表达式被视为 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 中的一些东西是如何工作的,因为它有很多语法糖并且很有用 'shortcuts'。
我对 Scala 很不熟悉,所以我想做的是执行一个函数,该函数将之前创建的列表作为参数获取。然后我遍历整个列表以小写形式读取每个元素以找到关键字。
最后,我数了多少次这个词 return value.My 项目被创建为 Scala class,顺便说一句,在我的代码中似乎是小写读取小写的每个列表元素是行不通的。
如果我将我的所有代码都移到一个有效的函数之外,但我不明白为什么在函数式方法中它不能通过。
请大佬们帮忙解答一下,谢谢 澳大利亚
代码:
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)
}
好吧,首先如果你想要一个接受字符串列表的方法,那么它应该是这样的:
def myMethod(someList: List[String]) = {...}
其次,scala 的 List
提供了查看其元素的方法,如 find()
、exist()
、count()
等。我强烈建议使用它们。这些方法将布尔函数作为参数。铁。检查列表是否包含包含特定子字符串的元素将如下所示:
someList.exists(s => s.contains("programmation"))
计算包含该子字符串的元素非常相似:
someList.count(s => s.contains("programmation"))
第三件事,你不需要在 Scala 中使用 return
语句,最后一个表达式被视为 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 中的一些东西是如何工作的,因为它有很多语法糖并且很有用 'shortcuts'。