加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala:使用String的reduceLeft

发布时间:2020-12-16 18:22:53 所属栏目:安全 来源:网络整理
导读:我有一个整数列表,我想制作一个字符串. var xs = list(1,2,3,4,5)(xs foldLeft "") (_+_) // String = 12345 使用foldLeft它完美,但我的问题是它是否也适用于reduceLeft?如果是,怎么样? 解决方法 使用reduceLeft无法以这种方式工作.非正式地,您可以将reduc
我有一个整数列表,我想制作一个字符串.

var xs = list(1,2,3,4,5)
(xs foldLeft "") (_+_)               // String = 12345

使用foldLeft它完美,但我的问题是它是否也适用于reduceLeft?如果是,怎么样?

解决方法

使用reduceLeft无法以这种方式工作.非正式地,您可以将reduceLeft视为foldLeft的特殊情况,其中累积值与集合元素的类型相同.因为在您的情况下元素类型是Int并且累积值是String,所以无法像使用foldLeft那样使用reduceLeft.

但是在这种特定情况下,您可以简单地将所有Int元素转换为String,然后减少:

scala> xs.map(_.toString) reduceLeft(_+_)
res5: String = 12345

请注意,如果列表为空,这将引发异常.这是与foldLeft的另一个区别,它处理空案例就好了(因为它有一个明确的起始值).这也是效率较低的,因为我们创建了一个全新的(字符串)集合,只是为了在现场减少它.总而言之,foldLeft是一个更好的选择.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读