首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据声明-使用3参数

数据声明-使用3参数
EN

Stack Overflow用户
提问于 2017-05-18 16:57:46
回答 1查看 73关注 0票数 1

我现在要使用数据类型,但是我从其他编程语言中知道了一些事情。想象一下“日期”得到的(一年的月份日)

当我有

代码语言:javascript
复制
data Month = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec
data Date = Date Int Month Int

我想要一个功能

代码语言:javascript
复制
showDate :: Date -> String

如何将数据类型日期中的3参数用于创建年份?或者更好地描述..。如何创建包含返回的字符串,例如“2017年5月18日”

在其他语言中,我会为3参数或1的日期编写date2。

谢谢你帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-18 17:11:47

你在Haskell做pattern matching

代码语言:javascript
复制
data Month = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec deriving (Show)
data Date = Date Int Month Int

showData :: Date -> String
showDate (Date day mon year) = "Date is: " ++ (show day) ++ " " ++ (show mon) ++  " " ++ (show year)

请注意,我通过使用Show派生Month类型的deriving (Show)实例。您可以使用手工构建的Show实例,而不是自动执行,如下所示:

代码语言:javascript
复制
instance Show Month where
    show Jan = "January"
    show Feb   = "February"
    .... and so on

演示:

代码语言:javascript
复制
*Main> showDate (Date 3 Feb 2017)
"Date is: 3 Feb 2017"

甚至像这样:

代码语言:javascript
复制
data Month = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec deriving (Show)
data Date = Date Int Month Int deriving (Show)

这将自动派生数据类型的Show实例。

代码语言:javascript
复制
*Main> show (Date 3 Feb 2017)
"Date 3 Feb 2017"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44053819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档