0

私は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) 

} 

答えて

2

さて、あなたは文字列のリストを受け取るメソッドを持つようにしたい最初の場合は、それが必要

def myMethod(someList: List[String]) = {...} 

第二に、ScalaのListは、のように、その要素に目を通すためのメソッドが用意されていますように見えます、count()などを使用することを強くお勧めします。それらのメソッドは、ブール関数をパラメータとして取ります。 Fe。チェックリストは、特定の部分文字列は次のようになります含まれている要素が含まれている場合:サブは非常に類似していることを含んで

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でいくつかのことがどのように機能するのかを知ることをお勧めします。

+0

メソッド内で2つのリターン要素を定義するにはどうすればできますか?たとえば、最後に行った例ではIntを返しますが、2インチを返す場合はどうなりますか?ありがとう –

+0

メソッドの戻り値の型を 'Tuple2 [Int、Int]'に変更できます。タプルは、括弧内の2つの変数を閉じることで簡単に作成できます。fe: '(int1、int2)'。参照:https://www.tutorialspoint.com/scala/scala_tuples.htm –

関連する問題