在scala中使用列表作为输入运行函数
问题描述:
我对Scala很不习惯,所以我想要做的就是执行一个函数,该函数可以获取先前创建的列表的参数。然后我通过整个列表读取小写的每个元素来查找关键字。在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)
}
答
嗯,首先,如果你想有方法,它采用字符串列表,那么它应该看起来像:
def myMethod(someList: List[String]) = {...}
其次,Scala的List
提供的方法,通过它的元素,看起来像find()
,exist()
,count()
等我强烈建议使用它们。这些方法使用布尔函数作为参数。铁。检查是否列表包含包含某些子看起来像元素:包含子
someList.exists(s => s.contains("programmation"))
计数元素非常相似:
someList.count(s => s.contains("programmation"))
第三件事情,你不需要使用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中有些东西的工作原理,因为它有很多语法糖和有用的“快捷方式”。
你怎么能在一个方法中定义两个返回元素,例如你在最后返回一个Int的例子,但是如果你想返回2个Ints呢?谢谢 –
您可以将方法返回类型更改为'Tuple2 [Int,Int]'。通过关闭括号fe .:'(int1,int2)'中的2个变量可以轻松创建元组。请参阅:https://www.tutorialspoint.com/scala/scala_tuples.htm –