【问题标题】:why can't I add Ints to the last Ints of a tuples?为什么我不能将整数添加到元组的最后一个整数?
【发布时间】:2021-03-11 16:51:35
【问题描述】:

我要一个数据学生和一个类型类:

data Student = Student {nome :: String
                        , stdNumber :: Int
                        , approvedClass :: Int
                        , failedClass :: Int
                        }
type Class = [Student]

我正在尝试添加到已批准的班级编号,但学生失败了,但我不知道该怎么做。我已经有了这个:

addClasses :: Student-> Int -> Int -> Student
addClasses student aC fC = (student _ _ (approvedClass+aC) (faileClass+fC))

但它不起作用,我不明白为什么?或者如何让它发挥作用?

【问题讨论】:

    标签: list haskell types tuples


    【解决方案1】:

    _ 仅在模式匹配中有效,不会自动表示“保持该字段相同”。相反,use record update syntax:

    addClasses :: Student-> Int -> Int -> Student
    addClasses student aC fC =
        student { approvedClass = approvedClass student + aC
                , failedClass = failedClass student + fC
                }
    

    【讨论】:

      【解决方案2】:

      作为记录语法的替代方法,您需要显式匹配每个字段,以便在构造新的Student 值时重用。

      addClasses :: Student -> Int -> Int -> Student
      addClasses (Student w x y z) aC fC = Student w x (y + aC) (z + fC)
      

      【讨论】:

        猜你喜欢
        • 2013-08-17
        • 1970-01-01
        • 2021-06-21
        • 2014-11-05
        • 2012-04-19
        • 2023-02-05
        • 1970-01-01
        • 2011-12-17
        • 2020-12-02
        相关资源
        最近更新 更多