3.4.2 引數化函式的好處
讓我們看乙個另外的示例,為了另乙個目的而使用此函式——乍一看起來,與加或乘列表中的元素的詩篇同。讓我們看看,是否能算出最大值:
> aggregatelist max (-1) [ 4; 1; 5; 2; 8; 3 ];;
val it : int = 8
這個函式的第乙個引數值(max),是內建的 f# 函式,從給定的兩個數的引數值中返回較大的。我們用 –1 作為初始值,因為,我們希望該列表僅包含正數。該程式第一次比較 3 和 – 1,並返回這兩個中較大的。在下一次迭代中,它取的當前值(前一次比較的結果,是 3),與 8 比較,返回較大的。在下一步中,8 與 2 比較,然後是 5…等等。同樣,你可能會很容易地找出列表中的最小元素,使用 min 作為第乙個引數值,用乙個大數(例如,int32.maxvalue)作為第二個引數。
事實上,該函式變得更加有用,通過允許呼叫者在聚合過程中使用整數以外(的型別)。你可以看到,aggregatelist 函式體並沒有在任何地方宣告聚合的值應該是整數;唯一指定的位置是在 op 引數的型別批註中。它指定該函式返回乙個整數,所以,f# 知道這個聚合值將是乙個整數,因此,我們只需要刪除型別批註,就可以使**更通用。f# 語言的這個強大功能,被稱為自動范型化(automatic generalization),我們將在第 6 章中學習如何使用。
3 4 2 引數化函式的好處
3.4.2 引數化函式的好處 我們看另乙個使用這個函式的示例,為了不同的目的,初看起來,完全不同於計算列表元素的和或積。讓我們看看,是否能找出最大值 aggregatelist max 1 4 1 5 2 8 3 val it int 8 作為第乙個引數的函式 max 是內建的 f 函式,返回給定的...
用指標做函式引數的好處,
用指標做函式引數的好處,首先要理解函式傳參的過程,函式傳參是複製型的,例如 void modify int a a void main int a 5 modify a printf d a 程式執行完之後,a的值還是5,為什麼呢,因為在執行modify函式的時候,是另外開闢了儲存空間,將a的值複製...
引數化的函式物件
include stdafx.h include include include include using namespace std class student 運算子過載 bool operator int no class matchexpress bool operator student...