函式式:實現了某個特質的物件,有22個function
程式語言的正規化:
命令式:面向過程、物件導向
函式式:hashkey,scala
object objectdemo
}// val myfun = new sumfunction
// println(myfun.func(22, 11))
val myfun = new myfunction2[int, int, int]
}//println(myfun.func(3, 7))
//testfunction1(fsum);
testfunction2((x, y) => x * y);
}def testfunction1(f : myfunction2[int,int,int]):unit =
def testfunction2(f : function2[int,int,int]):unit =
//方法
def sum(x:int, y:int):int=
//函式-----是乙個lambda表示式,它背後有就乙個函式式介面
val fsum = (x:int, y:int)=> x + y
}trait myfunction2[x, y, z]
class sumfunction extends myfunction2[int, int, int]
}
class currydemo
def func1(op:function2[int,int,int], a:int, b:int):int = op(a,b)
// println(func1((x,y)=>x*y, 3, 4))
def func3(op:(int, int) => int, a:int, b:int):(int,int)=>int =
val f9 = func3((x,y)=>x*y,4,6)
//println(f.tostring())
//println(f9(4,9))
//呼叫高階函式
val f = func3(add,1,2)
//println(f(6, 9))
//呼叫函式
def add(a:int,b:int) = a + b
//柯里化----------邏輯數學----- 這個世界基本的組成元素就是 a=>a
def plusby1(factor:int) = (x:int) => x + factor
def plusby(factor:int) =
val f1 = plusby(3)
println(f1(5))
val r1 = plusby(3)(5)
println(r1)
// def add2(a:int) = (b:int) => a + b
println(add2(3)(4))
}object currydemo
}
//偏函式 ------- partial function
object partialfunctiondemo2
if(signal.isdefinedat(0) == true)
val compose_signal:partialfunction[int,int] = signal.orelse
println(compose_signal(6))
//println(signal(0))
val new_signal:function[int,int] = signal.compose
println(signal(4))
println(new_signal(4))
}}
def main(args: array[string]): unit = } scala函式式程式設計 柯里化 偏函式
函式式 實現了某個特質的物件,有22個function 程式語言的正規化 命令式 面向過程 物件導向 函式式 hashkey,scala object objectdemo val myfun new sumfunction println myfun.func 22,11 val myfun ne...
Scala函式式程式設計 Curry柯里化
函式式程式設計的乙個思想 只傳遞給函式一部分引數來呼叫函式,然後返回乙個函式去處理剩下的引數。簡單說curry就是對高階函式 就是一種對過程的抽象 參考map它就是乙個抽象的過程 的降階處理。比如 function arg1,arg2 變成function arg1 arg2 function ar...
Scala 函式柯里化
柯里化指的是將原來接受多個引數的函式變成新的接受乙個引數的函式的過程,新函式的引數接受原來的第二個引數為唯一引數,如果有n個引數,就是把這個函式分解成n個新函式的過程 1 函式程式設計中,接受多個引數的函式都可以轉化為接受單個引數的函式,這個轉化過程就叫柯里化 2 柯里化就是證明了函式只需要乙個引數...