【问题标题】:Haskell define multiple functions using tuplesHaskell 使用元组定义多个函数
【发布时间】:2021-08-15 11:35:27
【问题描述】:

我刚刚遇到了一些类似这样的 Haskell 代码:

(functionOne, functionTwo)
  | someCondition = (10, "Ten")
  | otherwise     = (20, "Twenty")

从代码的使用方式我认为我理解这段代码的意图,即它只是一种更简洁的写法:

functionOne
  | someCondition = 10
  | otherwise     = 20

functionTwo
  | someCondition = "Ten"
  | otherwise     = "Twenty"

但是,我不记得以前见过以这种方式编写的函数,也不知道这种技术叫什么,因此无法搜索有关此的任何其他信息。

所以我的问题是:

  • 我对这里发生的事情的理解是否正确?
  • 这种技术有名字吗?

【问题讨论】:

    标签: haskell tuples


    【解决方案1】:

    这些不是函数,只是变量绑定。您正确理解了它的工作原理。它没有任何特定的名称,因为它只是模式匹配的另一种应用。任何时候你可以声明一个变量,你都可以在同一个位置声明一个更复杂的模式。

    【讨论】:

    • 我还要注意,| 表示法是一个单独的东西,称为守卫,可用于任何变量或函数绑定。
    • 谢谢,这为我解决了问题。让我感到困惑的是 a) 将守卫视为只能在函数内部使用的东西 b) 将值视为不带参数的函数。使用警卫时,变量和表达式之间没有= 也无济于事。当我想到这是(variableOne, variableTwo) = if someCondition then... 时,我突然发现这只是模式匹配。
    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    相关资源
    最近更新 更多