Haskell 程式將陣列傳遞給函式


在 Haskell 中,我們將透過使用使用者定義函式將陣列傳遞給函式。在所有示例中,我們將把陣列傳遞給使用者定義的函式以執行某些任務。這些函式可以是 sumArray、maxArray、minArray、countEvens 等。

在這種方法中,建立了使用者定義的函式,這些函式將包含具有某些返回值的函式定義,並透過將陣列作為引數傳遞給它來呼叫。

演算法

  • 步驟 1 − 透過編寫其帶有返回值的定義來定義使用者定義的函式。

  • 步驟 2 − 程式執行將從主函式開始。main() 函式控制整個程式。它被寫成 main = do。在主函式中,透過將陣列作為引數傳遞給它來呼叫使用者定義的函式。

  • 步驟 3 − 函式被呼叫後,結果將列印到控制檯。

示例 1

在這個例子中,sumArray 函式將一個 Int 值陣列作為引數,並返回陣列中所有元素的總和。main 函式透過傳遞陣列 [1, 2, 3, 4, 5] 並列印結果來演示 sumArray 函式的使用。

sumArray :: [Int] -> Int
sumArray xs = sum xs

main :: IO ()
main = do
   putStrLn "Sum of all elements in an array:"
   let xs = [1, 2, 3, 4, 5]
   let arrSum = sumArray xs
   putStrLn (show xs ++ " has a sum of " ++ show arrSum)

輸出

Sum of all elements in an array:
[1,2,3,4,5] has a sum of 15

示例 2

在這個例子中,maxArray 函式將一個整數陣列 xs 作為引數,並使用 maximum 函式返回最大元素。main 函式建立一個數組 xs,使用 maxArray 函式計算最大元素並列印結果。

maxArray :: [Int] -> Int
maxArray xs = maximum xs

main :: IO ()
main = do
   putStrLn "Maximum element in an array:"
   let xs = [1, 2, 3, 4, 5]
   let arrMax = maxArray xs
   putStrLn (show xs ++ " has a maximum element of " ++ show arrMax)

輸出

Maximum element in an array:
[1,2,3,4,5] has a maximum element of 5

示例 3

在這個例子中,minArray 函式將一個整數陣列 xs 作為引數,並使用 minimum 函式返回最小元素。main 函式建立一個數組 xs,使用 minArray 函式計算最小元素並列印結果。

minArray :: [Int] -> Int
minArray xs = minimum xs

main :: IO ()
main = do
   putStrLn "Minimum element in an array:"
   let xs = [1, 2, 3, 4, 5]
   let arrMin = minArray xs
   putStrLn (show xs ++ " has a minimum element of " ++ show arrMin)

輸出

Minimum element in an array:
[1,2,3,4,5] has a minimum element of 1

示例 4

在這個例子中,countEvens 函式將一個整數陣列 xs 作為引數,並透過使用 filter 函式過濾偶數元素並返回結果列表的長度來返回陣列中偶數元素的數量。main 函式建立一個數組 xs,使用 countEvens 函式計算偶數元素的數量並列印結果。

countEvens :: [Int] -> Int
countEvens xs = length (filter even xs)

main :: IO ()
main = do
   putStrLn "Number of even elements in an array:"
   let xs = [1, 2, 3, 4, 5]
   let count = countEvens xs
   putStrLn (show xs ++ " has " ++ show count ++ " even elements")

輸出

Number of even elements in an array:
[1,2,3,4,5] has 2 even elements

示例 5

在這個例子中,reverseArray 函式將一個整數陣列 xs 作為引數,並使用 reverse 函式返回反轉後的陣列。main 函式建立一個數組 xs,使用 reverseArray 函式計算反轉後的陣列並列印結果。

reverseArray :: [Int] -> [Int]
reverseArray xs = reverse xs

main :: IO ()
main = do
   putStrLn "Reversed array:"
   let xs = [1, 2, 3, 4, 5]
   let reversed = reverseArray xs
   putStrLn (show xs ++ " reversed is " ++ show reversed)

輸出

Reversed array:
[1,2,3,4,5] reversed is [5,4,3,2,1]

結論

在 Haskell 中,陣列是同一型別值的集合,儲存在連續的記憶體位置中。陣列可以被認為是一系列值,其中每個值都與一個索引相關聯。Haskell 中的陣列使用 [a] 型別表示,其中 a 是陣列中元素的型別。

使用者定義函式是由程式設計師建立以執行特定操作的函式。使用者可以透過傳遞任何所需的引數並在函式定義中返回某些值來根據需要定義函式。傳遞的引數可以是整數、字串或任何值的陣列。

更新於: 2023年3月1日

555 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.