我有一个数组[Float],我想使用该数组的元素来初始化一个新对象。
以一种经典的、命令式的方式,我当然可以简单地做:
val array: Array[Float] = ...
val rect: Rect = new Rect(Point(array(0), array(1), Size(array(2), array(3))
有没有办法使用某种类型的“ map ”以更实用的方式做到这一点?像这样的事情:
array => new Rect(Point(_(0), _(1)), Size(_(2), _(3)))
我正在尝试解析 CSV 文件:
string.split("\n") map {
line => line.split(".") map {
value => value.trim.toDouble
} => new Rect(Point(_(0), _(1)), Size(_(2), _(3))) // something like this?
}
最佳答案
不确定是否有效,但像 array(n)
这样重复变量名 4 次可以通过解构来改进:
val Array(x, y, w, h) = "1,2,3,4".split(",").map(_.trim.toDouble)
new Rect(Point(x, y), Size(w, h))
(类似于Markus1189的答案,只是它不必是匿名函数)
我想说这更多的是关于可读性而不是功能性
关于arrays - 如何将 "map"数组转换为单个新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38816991/