scala学習ノート(関数式プログラミング1)
5617 ワード
関数式プログラミング基础関数定义/宣言関数运行メカニズム再帰//难点[最短経路,邮便差问题,迷路问题,遡及]プロセス不活性関数と异常関数式プログラミング高级値関数(関数数面量)高次関数闭包応用関数コリー化関数,抽象制御...
関数戻り値の問題scala関数は、関数体の最後の行コードから戻り値タイプを自動的に推定することができる(returnは省略可能) returnが省略されている場合、戻り値タイプは を省略してもよい関数にreturnが明示的に使用されている場合は、戻り値のタイプを書く必要があります.書かない場合は、関数に戻り値がなく、返すしかありません(), 関数が戻り値がないことを明確に宣言した場合、returnも戻り値もありません 関数に戻り値がない、または戻り値タイプが不確定であることが明確である場合、戻り値タイプは省略(またはAnyと宣言) scalaでは関数はネストをサポートし、関数のパラメータは関数であってもよいし、戻り値は関数 であってもよい.
関数の宣言定義の問題scala関数のパラメータは、宣言時に直接初期値を付与することができ、関数を呼び出す際に、実パラメータを指定しない場合はデフォルト値を使用し、実パラメータを指定すると、実パラメータは初期値 を上書きします.関数に複数のパラメータがある場合、パラメータがデフォルト値を上書きするかデフォルト値のないパラメータに渡すかは判断できません(デフォルトは左から右)、この場合は名前付きパラメータ を使用できます.
さいきかんすうもんだい
再帰関数は実行前に戻り値タイプを推定できません.使用時に明確な戻り値タイプが必要です.
可変パラメータ
scala関数は可変パラメータをサポートし、可変パラメータは最後に置かなければならず、1つしかありません.
プロセス
関数の戻り値をUnitとする関数をプロシージャ(procedure)と呼び、明確な戻り値がなければ等号は省略できます
関数を宣言するときに戻り値タイプがなく、等号がある場合、その関数は戻り値があり、プロシージャ
ふかっせいかんすう
関数の戻り値がlazyとして宣言されると、関数の実行は最初に値を取るまで延期されます.(リラクゼーション、遅延ロード)
Lazyはvarタイプ変数を修飾できません
変数を宣言するときにlazyが宣言された場合、変数の割り当て値も辞退します.
異常
scalazでは、1つのcatchしかありません.catchには複数のcaseがあり、各caseは1つの異常に一致します.
scalaでは、コンパイル期間異常はなく、異常は実行時に「すべての異常がthrowableのサブタイプthrow式にタイプがある」とキャプチャされます.
scalaでは、throwsコメントを使用して例外
関数戻り値の問題
def fun (n1:Int):Int = n1
def fun (n1:Int)=n1
関数の宣言定義の問題
def function0(num: Int = 100) = num
println(function0(88)) //88
println(function0()) //100
fun("1",2) //
def fun(num1: Int, num2: Int = 199, num3: Int) = {
println(s"num1=${num1},num2=${num2},num3=${num3}")
}
fun(num1 = 1, num3 = 3)
さいきかんすうもんだい
再帰関数は実行前に戻り値タイプを推定できません.使用時に明確な戻り値タイプが必要です.
可変パラメータ
scala関数は可変パラメータをサポートし、可変パラメータは最後に置かなければならず、1つしかありません.
def fun(num1:Int,num2:Int*)=s"${num1},${num2.mkString}"
println(fun(1,2,3,4,5,6))
//1,23456
プロセス
関数の戻り値をUnitとする関数をプロシージャ(procedure)と呼び、明確な戻り値がなければ等号は省略できます
関数を宣言するときに戻り値タイプがなく、等号がある場合、その関数は戻り値があり、プロシージャ
def fun(num:Int)={}
ではありません.ふかっせいかんすう
関数の戻り値がlazyとして宣言されると、関数の実行は最初に値を取るまで延期されます.(リラクゼーション、遅延ロード)
Lazyはvarタイプ変数を修飾できません
変数を宣言するときにlazyが宣言された場合、変数の割り当て値も辞退します.
lazy val res =sum(10,20)
異常
scalazでは、1つのcatchしかありません.catchには複数のcaseがあり、各caseは1つの異常に一致します.
=>
記号は、後でこの異常に対する処理であることを示します.try{
//
}catch{
case ex:Exception=>{
//
}finally{
//
}
scalaでは、コンパイル期間異常はなく、異常は実行時に「すべての異常がthrowableのサブタイプthrow式にタイプがある」とキャプチャされます.
scalaでは、throwsコメントを使用して例外
@throws(classof[Exception])// NumberFormatException.class
を宣言します.