【发布时间】:2014-05-30 17:05:10
【问题描述】:
我写了一个简单的函数来反转给定的数字:
let reverseNumber x =
let rec innerFunc acc elem =
if elem = 0
then acc
else
let rem = elem % 10
innerFunc (10 * acc + rem) (elem / 10)
innerFunc 0 x
问题是它只适用于整数。例如int64 我需要创建另一个版本,分别使用0L 和10L 而不是0 和10。
我听说可以使用 inline 关键字和 LanguagePrimitives 编写更通用的函数,但后者既不包含提醒操作也不包含 'GenericTen'(尽管这可能通过 'GenericOne + GenericOne + ... 获得) .
你能帮忙吗?
【问题讨论】:
-
参见stackoverflow.com/a/4078150/82959,但请注意它不能正确处理负数(为此,参见stackoverflow.com/a/4741799/82959)。
标签: f# inline generic-programming