Haskell程式:將字串型別變數轉換為布林值
在Haskell中,我們將使用使用者定義函式`stringToBool`以及`Maybe Bool`、`toLower`和`readMaybe`函式將字串型別變數轉換為布林值。在第一個示例中,我們將使用`(stringToBool :: String -> Maybe Bool)`函式;在第二個示例中,我們將使用`(stringToBool str = case map toLower str of)`;在第三個示例中,我們將使用`(stringToBool str = case readMaybe str of)`。
演算法
步驟1 − 定義`stringToBool`函式。
步驟2 − 程式執行將從`main`函式開始。`main()`函式控制整個程式的執行。它被寫成`main = do`。
步驟3 − 初始化名為“str”的變數。它將儲存要轉換為相應布林值的字串。
步驟4 − 呼叫`stringToBool`函式並將`str`作為引數傳遞。
步驟5 − 函式呼叫後,使用`putStrLn`語句將結果布林值列印到控制檯。
示例1
在這個例子中,定義了`stringToBool`函式,它接受一個字串作為輸入並返回一個`Maybe Bool`值。`main`函式讀取輸入,並使用`stringToBool`函式嘗試將輸入字串轉換為布林值。如果轉換成功,則使用`putStrLn`和`show`將生成的布林值列印到控制檯。如果轉換失敗,程式將列印錯誤訊息。
module Main where stringToBool :: String -> Maybe Bool stringToBool "true" = Just True stringToBool "false" = Just False stringToBool _ = Nothing main :: IO () main = do let str = "true" case stringToBool str of Just b -> putStrLn ("Boolean value is: " ++ show b) Nothing -> putStrLn "Invalid input"
輸出
Boolean value is: True
示例2
在這個例子中,輸入字串首先使用`map toLower`轉換為小寫。然後檢查小寫字串是否等於“true”或“false”。如果是,則返回用`Just`構造器包裝的相應布林值;否則,返回`Nothing`。
import Data.Char (toLower) stringToBool :: String -> Maybe Bool stringToBool str = case map toLower str of "true" -> Just True "false" -> Just False _ -> Nothing main :: IO () main = do let str = "true" case stringToBool str of Just b -> putStrLn ("Boolean value is: " ++ show b) Nothing -> putStrLn "Invalid input"
輸出
Boolean value is: True
示例3
在這個例子中,`readMaybe`函式用於嘗試將輸入字串解析為布林值。如果解析成功並且結果為`True`或`False`,則將相應的布林值包裝在`Just`構造器中並返回。否則,返回`Nothing`。
import Text.Read (readMaybe) stringToBool :: String -> Maybe Bool stringToBool str = case readMaybe str of Just True -> Just True Just False -> Just False _ -> Nothing main :: IO () main = do let str = "True" case stringToBool str of Just b -> putStrLn ("Boolean value is: " ++ show b) Nothing -> putStrLn "Invalid input"
輸出
Boolean value is: True
結論
字串到布林值的轉換是將布林值的字串表示形式(例如“True”或“False”)轉換為程式語言中實際布林值的過程。布林值是程式語言中表示兩種可能狀態(真或假)的基本資料型別。在某些情況下,使用者輸入或資料可能以表示布林值的字串形式出現,可能需要將此字串轉換為可在程式碼中使用的實際布林值。在Haskell中,使用使用者定義的`stringToBool`函式以及`toLower`和`readMaybe`函式將字串變數轉換為布林值。