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

scala – 为什么这些类似的语句会产生不同类型的对象?

发布时间:2020-12-16 18:59:46 所属栏目:安全 来源:网络整理
导读:在“不耐烦的 Scala”一书中,作者提供了以下两个“for-comprehension”的例子: for (c - "Hello"; i - 0 to 1) yield (c + i).toChar // Yields "HIeflmlmop"for (i - 0 to 1; c - "Hello") yield (c + i).toChar// Yields Vector('H','e','l','o','I','f',
在“不耐烦的 Scala”一书中,作者提供了以下两个“for-comprehension”的例子:

for (c <- "Hello"; i <- 0 to 1) yield (c + i).toChar 
// Yields "HIeflmlmop"

for (i <- 0 to 1; c <- "Hello") yield (c + i).toChar
// Yields Vector('H','e','l','o','I','f','m','p')

但是,他没有提到为什么输出在第一种情况下是String,而在第二种情况下是Vector.有人可以解释一下吗?谢谢.

解决方法

你的第一个例子被翻译成:

"Hello".flatMap(c => (0 to 1).map(i => (c + i).toChar))

和第二个

(0 to 1).flatMap(i => "Hello".map(c => (c + i).toChar))

StringOps.flatMap返回一个String,所以你的第一个例子也返回一个String. Range.flatMap改为返回IndexedSeq.

(编辑:李大同)

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

    推荐文章
      热点阅读