2012年1月4日 星期三

First-class function

如果一個程式語言的function是First-class object,我們就會說這個程式語言有First-class function
所以什麽是First-class object呢? 簡單的說就是function可以當作物件來使用
因此你可以把一個function當成參數傳給另一個function
可以在funciton中return一個function
也可以assign function給一個變數

有許多程式語言有Frist-class function,比如說: Scheme, Haskell, JavaScript, Python......
以下我們以Python為例來說明Frist-class function的一些特性
  • Assign to a variable
def average(number):
    return sum(number) / len(number)

a = average
print a([1, 2, 3, 4, 5])
Output: 3
以上這個範例會印出3,a其實就是average的alias
  • Put the function in a list
def area(r):
    return PI * r * r

def circumference(r):
    return 2 * PI * r

funcs = [area, circumference]
  • Pass the function into a function
def area(r):
    return PI * r * r

def foo(func, value):
    return func(value)

print foo(area, 1.0)
Output: 3.14159

沒有留言:

張貼留言