Haskell程序:将基本类型转换为对象


在Haskell中,我们将使用访问器函数、构造函数和记录语法将基本类型转换为对象。在第一个例子中,我们将使用(getName person = name person),在第二个例子中,我们将使用(getName (Person name _) = name 和 getAge (Person _ age) = age)。在第三个例子中,我们将使用记录语法。

算法

  • 步骤1 - 定义具有两个字段(名称和年龄)的“Person”数据类型。

  • 步骤2 - 定义getName函数。

  • 步骤3 - 程序执行将从main函数开始。main()函数控制整个程序。它写成 main = do。

  • 步骤4 - 使用构造函数初始化名为“p”的对象,包含名称和年龄。

  • 步骤5 - 调用函数后,使用‘putStrLn’语句将Person对象的名称和年龄打印到控制台。

示例1

在这个例子中,我们定义了一个Person数据类型,它有两个字段:类型为String的name和类型为Int的age。我们还定义了一个getName函数,它接受一个Person对象并返回其name字段。

data Person = Person { name :: String, age :: Int }

getName :: Person -> String
getName person = name person

main :: IO ()
main = do
   let p = Person { name = "Alice", age = 30 }
   putStrLn $ "Name: " ++ getName p
   putStrLn $ "Age: " ++ show (age p)

输出

Name: Alice
Age: 30

示例2

在这个例子中,我们使用一个构造函数定义了一个Person数据类型,该构造函数接受两个参数:一个表示人名的String和一个表示其年龄的Int。

data Person = Person String Int

getName :: Person -> String
getName (Person name _) = name

getAge :: Person -> Int
getAge (Person _ age) = age

main :: IO ()
main = do
   let p = Person "Alice" 30
   putStrLn $ "Name: " ++ getName p
   putStrLn $ "Age: " ++ show (getAge p)

输出

Name: Alice
Age: 30

示例3

在这个例子中,我们定义了一个Person数据类型,它有两个字段:类型为String的getName和类型为Int的getAge。getName和getAge字段使用记录语法定义,该语法会自动生成与字段名称相同的访问器函数。

data Person = Person { getName :: String, getAge :: Int }

main :: IO ()
main = do
   let p = Person { getName = "Alice", getAge = 30 }
   putStrLn $ "Name: " ++ getName p
   putStrLn $ "Age: " ++ show (getAge p)

输出

Name: Alice
Age: 30

结论

在Haskell中,像Int、Double和Bool这样的基本类型表示为值而不是对象。但是,可以创建包装这些基本类型并通过方法提供附加功能的自定义数据类型。在Haskell中,我们可以使用访问器函数、构造函数和记录语法进行此类转换。

更新于:2023年4月25日

浏览量:152

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.