Scala柯理化函式

2021-09-11 22:14:47 字數 884 閱讀 6264

柯里化(currying)指的是將原來接受兩個引數的函式變成新的接受乙個引數的函式的過程。新的函式返回乙個以原有第二個引數為引數的函式。

首先我們定義乙個函式:

def add(x:int,y:int)=x+y
那麼我們應用的時候,應該是這樣用:add(1,2)

現在我們把這個函式變一下形:

def add(x:int)(y:int) = x + y
那麼我們應用的時候,應該是這樣用:add(1)(2),最後結果都一樣是3,這種方式(過程)就叫柯里化。

add(1)(2) 實際上是依次呼叫兩個普通函式(非柯里化函式),第一次呼叫使用乙個引數 x,返回乙個函式型別的值,第二次使用引數y呼叫這個函式型別的值。

實質上最先演變成這樣乙個方法:

def add(x:int)=(y:int)=>x+y
那麼這個函式是什麼意思呢? 接收乙個x為引數,返回乙個匿名函式,該匿名函式的定義是:接收乙個int型引數y,函式體為x+y。現在我們來對這個方法進行呼叫。

val result = add(1)
返回乙個result,那result的值應該是乙個匿名函式:(y:int)=>1+y

所以為了得到結果,我們繼續呼叫result。

val sum = result(2)
最後列印出來的結果就是3。

下面是乙個完整例項:

object test 

def strcat(s1: string)(s2: string) =

}

執行以上**,輸出結果為:

$ scalac test.scala

$ scala test

str1 + str2 = hello, scala!

什麼是柯理化函式

函式柯理化的表現是 把乙個需要傳入多個變數的函式變為多個巢狀函式,並且內層函式會呼叫上層函式的變數。現在有乙個簡單的add函式 function add x,y console.log add 1,2 3 將其改為柯理化函式 function add2 x console.log add2 1 2 ...

Scala 函式柯里化

柯里化指的是將原來接受多個引數的函式變成新的接受乙個引數的函式的過程,新函式的引數接受原來的第二個引數為唯一引數,如果有n個引數,就是把這個函式分解成n個新函式的過程 1 函式程式設計中,接受多個引數的函式都可以轉化為接受單個引數的函式,這個轉化過程就叫柯里化 2 柯里化就是證明了函式只需要乙個引數...

scala 函式柯里化

1 函式程式設計中,接受多個引數的函式都可以轉化為接受單個引數的函式,這個轉化過程就叫柯里化 2 柯里化就是證明了函式只需要乙個引數而已。不重要 package com.xcu.chapter13 object demo05 curry 3 柯里化就是函最重要的是要體現函式的分工協作,例如乙個函式是...