为什么Scala中的Array.map的定义是“抛出新的Error()”
发布时间:2020-12-16 18:59:50 所属栏目:安全 来源:网络整理
导读:Array地图的源代码是: override def map[B](f: A = B): Array[B] = throw new Error() 但以下作品: val name : Array[String]= new Array(1)name(0)="Oscar"val x = name.map { ( s: String ) = s.toUpperCase }// returns: x: Array[java.lang.String] =
Array地图的源代码是:
override def map[B](f: A => B): Array[B] = throw new Error() 但以下作品: val name : Array[String]= new Array(1) name(0)="Oscar" val x = name.map { ( s: String ) => s.toUpperCase } // returns: x: Array[java.lang.String] = Array(OSCAR) 解决方法
通常,当您看到在库类的源代码中抛出新的Error()时,它表示编译器通过桥接到平台的设施来介入并实现该方法的一点(请记住,这可能是Java或.NET) .
Array SID解释了在Scala 2.7.x中如何处理数组,以及它们在2.8中的变化.如果你调用map,那么编译器用来神奇地将对象转换成BoxedArray. 在2.8中,将数组集成到Scala集合框架中主要使用正常的langauges特性进行处理 – 根据上下文和类型的隐式参数,从Array [T]到WrappedArray [T]或ArraySeq [T]的隐式转换清单[T]支持创建通用类型T的数组.数组indexing,length和update仍然显示为抛出新的Error(). Array#map不再存在,而是在WrappedArray和ArraySeq上找到这个方法作为常规方法. UPDATE 如果你有兴趣知道这个编译器魔术是定义的,看看Scala 2.8的化身为Cleanup.scala. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在Angular 2 / Angular-CLI中将CSS从JS中保留下来
- 关于用JAX-WS调用webservice异常:Server did not recogniz
- twitter-bootstrap – Bootstrap 3 with jQuery Validation
- 5天学会jaxws-webservice编程第一天
- bootstrap-按钮组
- Scala中带有可选字段的案例类
- 为什么我的Scala列表会在以下代码中消失?
- 使用 Dockerfile 文件但是不使用缓存生成镜像
- 带有“export -f”的BASH脚本中的GNU Parallel在Crond时失败
- angularjs2进阶教程2-建立一个主/详细页面的英雄名单