[英]Haskell concat Int
我在进行以下练习时遇到麻烦:
我必须创建一个名为addDigit的函数,该函数需要两个Int,第二个在0到9之间,并返回一个Int,它是第一个Int,然后是第二个Int。
例:
输入: addDigit (-123) 4
输出: -1234
我尝试过的是以下内容:
addDigit :: Int -> Int -> Int
addDigit x y = x ++ y
我知道它不起作用,因为++关键字仅适用于字符串,字符和列表(我认为),并且应该以一种简单的方式解决该问题,而无需将Int更改为Strings或任何其他变量,但是我完全不知道如何做。
您正在尝试以图形方式解决问题(将整数视为字符串),您希望将其视为数字问题。 对于正值,可通过以下功能实现数字附加。
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))
如您所见,有多种方法可以给猫做皮毛。
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.