scala解惑:偏関数と部分応用関数

1901 ワード

scalaにはParttialFunctionの概念があり、Partal Applid Functionという概念があります.前者の翻訳は偏り関数として、後者は「偏り応用関数」または「部分応用関数」と訳されています.一字の違いは大きいです.
まず偏関数は数学の概念で、偏関数は「関数」の一種ではなく、関数と平行な概念です.定義はwikiを参照してください.  http://zh.wikipedia.org/wiki/%E5%87%BD%E6%95%B0 , 指定された义分域Xには何らかの値が存在する可能性があり、その値は、当番域Yには対応していない.
scalaはモードマッチングによって偏関数を定義することができます.以下の2つの方法で定義される関数は偏関数と考えられます.彼らはドメインIntを定義する部分値だけを処理しました.p 1のようにParttialFunctionと定義されている追加の利点は、呼び出す前にisDefinedAt方法を使ってパラメータが処理されるかどうかを確認することができます. あるいは呼び出し時に、もう一つの偏り関数を受け入れて、パラメータが偏り関数によって捕捉されていない場合、どうすればいいかを定義します.つまり、表示できる声明です.実際のコードの中で、PartalFunctionを使って、確かに偏り関数を定義するべきです.
    def p1:PartialFunction[Int, Int] = {

        case x if x > 1 => 1

    }

    

    def p2 = (x:Int) => x match {

        case x if x > 1 => 1

    }
 
 
一部の応用関数とは、関数にN個のパラメータがあるということです.N以下のパラメータを提供すると、一部の応用関数が得られます. 
例えば、まず関数を定義します.
def sum(a:Int,b:Int,c:Int) = a + b + c; 
この関数から偏り関数を生み出すことができます.
def p_sum = sum(1, _:Int, _:Int)
このようにp_を呼び出すことができます.sum(2,3)は、sum(1,2,3)を呼び出して得られた結果に相当します.ここの二つの_関数sumの位置にそれぞれ対応するパラメータですので、定義もできます.
def p_sum = sum (_:Int, 1, _:Int) 
これは何の役に立つものですか?一つはコードの中で何度も関数を呼び出す必要があるときです.その中の一つのパラメータはいつも同じです.これを使ってコードを少なくしてもいいです.もう一つは?