【发布时间】:2021-11-07 19:04:54
【问题描述】:
我正在使用 SML 编程。我的函数接受一个整数,然后用逗号将它拼接成一个列表。例如数字 12345 -> [1,2.3,4,5]。我的问题是如何使我的代码更加模块化。我有点硬编码我的代码。我希望它适用于无限数量的整数。
fun digits(m:int) =
if m <10 then
[m]
else if m < 100 then
[m div 10] @ [m mod 10]
else if m > 100 andalso m < 1000 then
[(m div 10) div 10] @[(m div 10) mod 10] @ [m mod 10]
else if m > 1000 andalso m < 10000 then
[((m div 10) div 10) div 10] @ [((m div 10) div 10) mod 10] @ [(m div 10) mod 10] @ [m mod 10]
else if m > 10000 andalso m < 100000 then
[(((m div 10) div 10) div 10) div 10] @ [((m div 10) div 10) div 10 mod 10] @ [((m div 10) div 10) mod 10] @ [(m div 10) mod 10] @ [m mod 10]
else if m > 100000 andalso m < 1000000 then
[((((m div 10) div 10) div 10) div 10) div 10] @ [(((((m div 10) div 10) div 10) div 10) mod 10) mod 10] @ [((m div 10) div 10) div 10 mod 10] @ [((m div 10) div 10) mod 10] @ [(m div 10) mod 10] @ [m mod 10]
else if m > 1000000 andalso m < 10000000 then
[(((m div 10) div 10) div 10) div 10 div 10 div 10] @ [(((m div 10) div 10) div 10) div 10 div 10 mod 10] @ [((m div 10) div 10) div 10 mod 10]@ [((m div 10) div 10) mod 10] @ [(m div 10) mod 10] @ [m mod 10]
else
[(m div 10) div 10] @ [(m div 10) mod 10] @ [m mod 10]
【问题讨论】:
-
可能只有我一个人......但是在编程(函数式或其他方式)时,......无限数量的整数......令人困惑。
any integer等更合适更合适.. 只是我的一个想法.. 剩下的就看你了.. :-)
标签: sml