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),我們將在第六章中學習。
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...