Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 左截断Scala函数-从整数列表_Function_Scala - Fatal编程技术网

Function 左截断Scala函数-从整数列表

Function 左截断Scala函数-从整数列表,function,scala,Function,Scala,我是Scala的新手,你能帮我介绍一下简单的函数吗- 输入参数是一个整数,函数应该返回一个整数列表,第一个条目是input integer,其余的通过逐个省略最左边的数字来获得。比如说, 如果输入为0,则返回List(0),input=5678返回List(5678678,78,8) 提前非常感谢如果您能分享您的尝试,那将是一件非常有趣的事情,我们也可以尝试一下。:)我希望你有一些想法,这里有一些来自我这边的想法 "5678".foldRight(Seq[String](""))((c, s)

我是Scala的新手,你能帮我介绍一下简单的函数吗- 输入参数是一个整数,函数应该返回一个整数列表,第一个条目是input integer,其余的通过逐个省略最左边的数字来获得。比如说,

如果输入为
0
,则返回
List(0)
input=5678
返回
List(5678678,78,8)


提前非常感谢

如果您能分享您的尝试,那将是一件非常有趣的事情,我们也可以尝试一下。:)我希望你有一些想法,这里有一些来自我这边的想法

"5678".foldRight(Seq[String](""))((c, s) => s"$c${s.head}" +: s).dropRight(1)

"5678".foldRight(Seq[String]())((c, s) => s"$c${s.headOption.getOrElse("")}" +: s)
将数字转换为字符串。然后,
tails
完全按照您的要求执行。除了它是一个迭代器,所以将它转换为
列表
,并且它的末尾有一个空字符串,所以使用
init
返回除最后一个元素之外的所有元素。但是它们是字符串,所以再次使用
map
将它们全部转换为
Int

但我很确定你的导师希望你用数字来表达:)

这里有一个数字版本,在这种情况下,故意不加注释,这样你就可以自己计算出它是如何工作的

val n = 5678 
val digits = n.toString.size
List.iterate(10, digits)(10*) map { n % _}  
编辑:按照注释中的要求,另一种方法只是使用inits而不是tails(和一个相反的方法来获得请求的顺序)

这样数值计算就更容易了

List.iterate(n, digits)(_/10).reverse 

你这边有什么尝试吗?家庭作业问题对吧?顺便说一句,我这么说并不是想让你生气,但你会通过自己尝试学到更多,然后来这里问你的解决方案有什么问题,如果有的话。负数怎么办?@Alexis C-我应该把我的代码放在问题中,agreeScala简直太棒了。:)<代码>尾部非常有意义。奇怪的是,如果我们想要
列表(5,56,567,5678)
,你是怎么做到的?@Paul非常感谢,我尝试了正确的方向,知道如何使用map吗
val n = 5678 
val digits = n.toString.size
List.iterate(10, digits)(10*) map { n % _}  
5678.toString.inits.toList.init.reverse.map(_.toInt)
//> res0: List[Int] = List(5, 56, 567, 5678)
List.iterate(n, digits)(_/10).reverse