Scala:IndexOutOfBoundsException在映射时发生

 秘色瓷2502891691 发布于 2023-02-13 19:27

我在Windows下使用Scala 2.10.3和Java 1.7.0_45(64位)在我的代码中

List.range(0, 10) map {ListBuffer[Int]()}

抛出java.lang.IndexOutOfBoundsException.但另一方面,

List.range(0, 10) map {i => ListBuffer[Int]()}

效果很好.

所以我想知道为什么会这样?两个表达式之间有什么区别吗?

1 个回答
  • ListBuffer[T]的apply方法查找给定索引处的元素.因此,您可以将a ListBuffer[T]视为一种功能Int => T:

    val buf = ListBuffer[Int](1, 2, 3);
    val f: Int => Int = buf
    val i = f(1)    //i == 2
    

    因此,您的第一个示例是传递给map一个函数,该函数在空列表缓冲区中的给定索引处查找元素,即它等效于

    List.range(0, 10) map {i => ListBuffer[Int]()(i)}
    

    因此例外.

    2023-02-13 19:32 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有