Scala學習筆記 Scala中的柯里化

2021-09-29 03:11:03 字數 777 閱讀 5501

柯里化的意義:

一、提高程式效能,而是使**模組化,減少耦合增強其可維護性。

二、函式的通用性有所降低,但是適用性有所提高。

// 沒使用語法糖的 sum 函式 

def sum(f: int => int): (int, int): int =  

// 使用語法糖後的 sum 函式 

def sum(f: int => int)(a: int, b: int): int = if (a > b) 0 else f(a) + sum(f)(a + 1, b)

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

// 1.定義乙個雙參函式

def add(x: int, y: int) = x + y

// 2.柯里化後,變化前後結果都是3

def add1(x:int)(y:int) = x + y

實現過程

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

def add(x:int)=(y:int)=> x + y

package com1

/**  * @author yangxin_ryan

*/object test20

}

Scala學習筆記

scala學習筆記 一.scala中集合的常用方法 首先定義兩個陣列集合,用於測試 scala val arr1 array 1,2,3,4 arr1 array int array 1,2,3,4 scala val arr2 array 3,4,5,6 arr2 array int array ...

Scala學習筆記

1 閉包 var a 3 var addfun x int x a var b addfun 10 println b addfun 就是個和物件無關的函式,區域性變數,使用方法和函式一樣,但是好像不推薦這種寫法。2 類的建立,簡單使用abstract class bparent 構造函式引數會自動...

Scala 學習筆記

object a val u fab 15,list 1,1 val f p int print p t 變長引數 def sum nums int int int def main args array string unit def f p int int print f 4 object ab...