scala基礎知識総括(二)forサイクル応用、サンプルコードを含む

10985 ワード

文書ディレクトリ
  • 7、循環構造
  • 7.1 forループの基本用法
  • 7.2 scalaネストサイクルの簡略化方法
  • 7.3守備
  • 7.4 for導出式
  • 7.5 breakとcontinue
  • 7、循環構造
    7.1 forループの基本的な使い方
    for(i 

    7.2 scalaネストサイクルの簡略化方法
    原:2つのforループを書く必要があります
    for (i <- 1 to 3){
          for(j <- 1 to 5) if(j==5) println("*") else print("*")
    }
    

    簡略化:forループを1つだけ書き、ネストされたループ間を分割します.
    for (i <- 1 to 3; j <- 1 to 5) if(j==5) println("*") else print("*")
    

    7.3守備
    scalaではforサイクル括弧にif判定条件を加えることができ,これをガードと呼び,各サイクル変数はガードの判定を経なければならない.
    例:
    for(i <- 1 to 10 if i % 3 == 0){  //                
    println(i)
    }
    

    7.4 for導出式
    forのループボディの前にyieldキーワードが現れた場合、このforループは導出式と呼ばれ、このforループはセットを返します.
    例:
    val set1 = for(i <- 1 to 5) yield {
    	 i * 5
    }
    // set1 = Vector(5, 10, 15, 20, 25)
    

    7.5 breakとcontinue
    scalaではbreakキーとcontinueキーを削除しますが、scala特有の方法でbreakキーとcontinueキーを実現できます.
    ステップ1:実装機能のパッケージのインポート
    import scala.util.control.Breaks._
    

    break機能を実現し、breakable{forループ}を使用してforループを包み、ループ内でbreak()を呼び出す
    例:
    breakable{
    	for(i <- 1 to 10){
    		if(i == 5) break()  // i  5         ,       1,2,3,4
    		println(i)
    	}
    }
    

    continue機能を実現するには、break機能の実現とは大きく異なり、breakable(循環体)は循環内部にあり、その包まれているのは循環体全体である
    例:
    for(i <- 1 to 10){
    	breakable{
    		if(i % 2 == 0) break()  //  i          ,break()         ,       1,3,5,7,9
    		println(i)
    	}
    }
    

    .1小練習1:九九乗算表コンソール印刷出力九九乗算表
    参考答案:
    for(i <- 1 to 9; j <- 1 to i){  //          
    	print(s"${i} + ${j} = ${i+j}\t")  //       
    	if(i == j) println()
    }
    

    .2小练习2:アナログ登录は上の知识を结び付けて、scalaコードでユーザー登录の情景をシミュレートして、アカウントはzhangsanで、パスワードは123で、3回の登录が失败するとアカウントをロックします
    参考答案:
    import scala.io.StdIn
    import scala.util.control.Breaks._
    
    breakable{
    	for(i <- 1 to 3){
    		println("     :")
    		val user = StdIn.readLine()
    		println("     :")
    		val password = StdIn.readLine()
    		
    		//           
    		if(user == "zhangsan" && password == "123"){
    			println("    !")
    			break()  //          
    		}else{
    			if(i == 3) println("        !")
    			else println(s"    ,   ${3-i}   !")
    		}
    	}
    }