繁体   English   中英

Haskell concat Int

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM