【问题标题】:Different Between type Player and data Player?类型播放器和数据播放器之间的区别?
【发布时间】:2020-11-27 20:57:37
【问题描述】:

两者有什么区别:

A):

type Player = (String, Int)

name:: Player -> String
name (n,_) = n

number :: Player -> Int
number (_,i) = i

B):

data Player = Player { name :: String
                      , number :: Int
                      }

我什么时候使用它们?

【问题讨论】:

  • type 是一个类型同义词。因此,您无需创建新类型,只需给 (String, Int) 一个额外的名称。而data 创建了一个新类型。

标签: variables haskell types record


【解决方案1】:
type Player = (String, Int)

(String, Int) 类型创建一个新的名称。这不是一件非常有用的事情。玩家可能会对任何这样的配对感到困惑,并且类型系统不会捕捉到错误。不可能为Player 编写不适用于(String, Pair) 的类实例。

data Player = Player { name :: String
                      , number :: Int
                      }

创建一个全新的类型Player,其构造函数名为Player,该构造函数有两个命名字段。这有用的事情。

我对初学者的建议:不要理会type。它主要与某些高级语言功能结合使用,而且从来都不是很令人兴奋。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多