相关疑难解决方法(0)

如何编写通用数字的函数?

我对F#很陌生,发现类型推断确实很酷.但目前似乎它也可能导致代码重复,这不是一件很酷的事情.我想总结一个这样的数字的数字:

let rec crossfoot n =
  if n = 0 then 0
  else n % 10 + crossfoot (n / 10)

crossfoot 123
Run Code Online (Sandbox Code Playgroud)

这正确打印6.但是现在我的输入数字不适合32位,所以我必须将其转换为.

let rec crossfoot n =
  if n = 0L then 0L
  else n % 10L + crossfoot (n / 10L)

crossfoot 123L
Run Code Online (Sandbox Code Playgroud)

然后,BigInteger我来了,猜猜是什么......

当然,我只能提供bigint版本和转换输入参数,并根据需要输出参数.但首先我假设使用BigInteger过度int有一些性能惩罚.第二个let cf = int (crossfoot (bigint 123))不好看.

写这个没有通用的方法吗?

generics f# types numbers type-inference

37
推荐指数
3
解决办法
4439
查看次数

标签 统计

f# ×1

generics ×1

numbers ×1

type-inference ×1

types ×1