运行 以列表作为输入的 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'。