Haskell 连接 Int
Haskell concat Int
我在进行以下练习时遇到问题:
我必须创建一个名为 addDigit 的函数,它接受两个 Int,第二个在 0 到 9 之间,return一个 Int,第一个 Int 后面是第二个 Int。
示例:
输入:addDigit (-123) 4
输出:-1234
我试过的是:
addDigit :: Int -> Int -> Int
addDigit x y = x ++ y
我知道它不起作用,因为 ++ 关键字仅适用于字符串、字符和列表(我认为),这应该以一种简单的方式解决,无需将 Int 更改为字符串或任何类型其他变量,但我完全不知道该怎么做。
您正在尝试以图形方式解决问题(将整数视为字符串),您希望将其视为数值问题。对于正值,附加数字是通过以下函数完成的。
addDigitPositive a b = 10 * a + b
不幸的是,如果 a < 0
,这将 不会 工作。在那种情况下,我们将不得不减去 b
。我们可以很容易地将这个功能与功能守卫结合起来。
addDigit a b | a < 0 = a * 10 - b
| otherwise = a * 10 + b
或者您可以通过使用 show
将数字转换为字符串,然后将它们与 (++)
:
连接起来,以图形方式解决它
addDigit :: Int -> Int -> String
addDigit x y = (show x) ++ (show y)
现在,如果您仍然想要 Int 作为输出,您可以使用 read
:
将字符串转换为 Int
addDigit :: Int -> Int -> Int
addDigit x y = read ((show x) ++ (show y))
如您所见,剥猫皮的方法不止一种。
希望对您有所帮助。
我在进行以下练习时遇到问题:
我必须创建一个名为 addDigit 的函数,它接受两个 Int,第二个在 0 到 9 之间,return一个 Int,第一个 Int 后面是第二个 Int。
示例:
输入:addDigit (-123) 4
输出:-1234
我试过的是:
addDigit :: Int -> Int -> Int
addDigit x y = x ++ y
我知道它不起作用,因为 ++ 关键字仅适用于字符串、字符和列表(我认为),这应该以一种简单的方式解决,无需将 Int 更改为字符串或任何类型其他变量,但我完全不知道该怎么做。
您正在尝试以图形方式解决问题(将整数视为字符串),您希望将其视为数值问题。对于正值,附加数字是通过以下函数完成的。
addDigitPositive a b = 10 * a + b
不幸的是,如果 a < 0
,这将 不会 工作。在那种情况下,我们将不得不减去 b
。我们可以很容易地将这个功能与功能守卫结合起来。
addDigit a b | a < 0 = a * 10 - b
| otherwise = a * 10 + b
或者您可以通过使用 show
将数字转换为字符串,然后将它们与 (++)
:
addDigit :: Int -> Int -> String
addDigit x y = (show x) ++ (show y)
现在,如果您仍然想要 Int 作为输出,您可以使用 read
:
addDigit :: Int -> Int -> Int
addDigit x y = read ((show x) ++ (show y))
如您所见,剥猫皮的方法不止一种。
希望对您有所帮助。