我想用它的名字压缩一个月的索引:
val res = for(i <- 1 to 12) {
val m = DateTime.parse(i.toString, DateTimeFormat.forPattern("mm").withLocale(Locale.US))
yield (i, m.monthOfYear().getAsString)
}为什么res是Unit
发布于 2014-02-15 13:56:04
这可能是一个更好的方法:
val res = (1 to 12) map { i =>
val m = DateTime.parse(i.toString, DateTimeFormat.forPattern("mm").withLocale(Locale.US))
(i, m.monthOfYear().getAsString)
}但是你的for不起作用,因为“产生”关键字应该在"for“之外。
val res = for {
i <- 1 to 12
m = DateTime.parse(i.toString, DateTimeFormat.forPattern("mm").withLocale(Locale.US))
} yield (i, m.monthOfYear().getAsString)发布于 2014-02-15 13:56:27
你的理解力应该是:
val res = for(
i <- 1 to 12;
m = DateTime.parse(i.toString, DateTimeFormat.forPattern("mm").withLocale(Locale.US))
) yield (i, m.monthOfYear().getAsString)但是,如果有表单的for表达式,则给出的代码不会编译。
for(i <- 1 to 12) {
...
}这是转换成
1.to(12).foreach(i => ... )返回Unit,这就是为什么res在代码中是Unit的原因。
您需要使用yield创建一个投影。
https://stackoverflow.com/questions/21798425
复制相似问题