访问数据类型的属性

Luc*_*984 0 haskell

我创建了一个新的数据类型:

data Human = Human [Names] Age
  deriving(Eq,Show)
type Names = String
type Age = Int
Run Code Online (Sandbox Code Playgroud)

现在我想访问Human类型对象的[Names]元素:

human1 = Human ["FirstName","LastName"] 22
Run Code Online (Sandbox Code Playgroud)

有一个简单的方法可以为我的例子做这个Names human1吗?

Igo*_*dov 5

在这种情况下,最简单的方法是定义一个函数,该模式匹配Human数据类型:

getNames (Human names _) = names
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用记录语法来定义记录的字段:

data Human = Human { names :: [Names], age :: Age }
Run Code Online (Sandbox Code Playgroud)

使用此语法实现namesage功能,允许您访问字段:

human1 = Human ["FirstName","LastName"] 22
names human1
Run Code Online (Sandbox Code Playgroud)