我是哈斯克尔的新人.我有新的类型:
type RealName = String
type UserName = String
type GroupName = String
type Message = String
Run Code Online (Sandbox Code Playgroud)
和
data User = User UserName RealName [UserName] [Post]
Run Code Online (Sandbox Code Playgroud)
在一个新的功能,我想访问用户的真实姓名;
accreal :: User -> RealName
accreal us = ??
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做,我尝试了很多方法,但没有工作.
只需使用模式匹配:
accreal:: User -> RealName
accreal (User un rn uns ps) = rn
Run Code Online (Sandbox Code Playgroud)
您可能还希望使用未使用的变量作为前缀_以禁止显示警告.
accreal:: User -> RealName
accreal (User _un rn _uns _ps) = rn
Run Code Online (Sandbox Code Playgroud)
您也可以简单地使用_丢弃值,例如accreal (User _ rn _ _) = rn.
或者,将您的data类型更改为记录:
data User = User
{ user :: UserName
, real :: RealName
, others :: [UserName]
, posts :: [Post] }
Run Code Online (Sandbox Code Playgroud)
这会自动real :: User -> RealName为您定义投影.
| 归档时间: |
|
| 查看次数: |
273 次 |
| 最近记录: |