Scala错误-正向引用扩展了值的定义
我试图生成从1开始不包含在给定列表中的间隔列表。因此,我编写了如下所示的代码:Scala错误-正向引用扩展了值的定义,scala,Scala,我试图生成从1开始不包含在给定列表中的间隔列表。因此,我编写了如下所示的代码: def comparatorInt(first: (Int,Int), second: (Int, Int)) = first._2 <= second._1 val list1 = List((93,97), (5,10),(15,20),(30,50), (76,90)).sortWith(comparatorInt) var curr = 1 val res = for(x <- list1;
def comparatorInt(first: (Int,Int), second: (Int, Int)) = first._2 <= second._1
val list1 = List((93,97), (5,10),(15,20),(30,50), (76,90)).sortWith(comparatorInt)
var curr = 1
val res = for(x <- list1; tmp = curr; curr = x._2+1) yield(tmp,x._1-1)
def comparatorInt(first:(Int,Int),second:(Int,Int))=first.\u 2理解的中的curr
与您的var
不同。你写的相当于
var curr = 1
val res = for(x <- list1; tmp = anotherCurr; anotherCurr = x._2+1) yield(tmp,x._1-1)
var curr=1
val res=for(xfor
理解中的curr
与您的var
不同。您所写的与
var curr = 1
val res = for(x <- list1; tmp = anotherCurr; anotherCurr = x._2+1) yield(tmp,x._1-1)
var curr=1
val res=for(x另一个答案很好地解释了出现错误的原因。我只想补充一点:不要使用var
,大多数时候你都不需要它们。如果你是用scala编写的,那么最好利用该语言的强大功能,保持习惯用语,而不是用有趣的语法编写相同的旧java代码:)
考虑这样的事情:
((0,0) :: list1).foldRight(List.empty[(Int,Int)]) {
case(x@(a, b), res@((c, d) :: tail)) if(b < c-1) => x :: (b+1, c-1) :: res
case(x, res) => x :: res
}.tail
((0,0)::list1.foldRight(List.empty[(Int,Int)]){
如果(bx:(b+1,c-1)::res
案例(x,res)=>x::res
}.尾巴
(除了不会导致编译错误外,这个版本也可以正常工作,不像您的版本,它有逻辑错误;)。另一个答案很好地解释了为什么会出现错误。我只是想补充一点:不要使用var
,大多数时候你并不需要它们。如果您是用scala编写的,那么最好利用该语言的强大功能并保持惯用性,而不仅仅是用有趣的语法编写相同的旧java代码:)
考虑这样的事情:
((0,0) :: list1).foldRight(List.empty[(Int,Int)]) {
case(x@(a, b), res@((c, d) :: tail)) if(b < c-1) => x :: (b+1, c-1) :: res
case(x, res) => x :: res
}.tail
((0,0)::list1.foldRight(List.empty[(Int,Int)]){
如果(bx:(b+1,c-1)::res
案例(x,res)=>x::res
}.尾巴
(除了不会导致编译错误外,这个版本也能正常工作,不像你的版本,它有逻辑错误;)。IntelliJ有一个很好的代码分析器,可以很容易地找到这类东西。我是Eclipse的长期用户,但IntelliJ对于Scala来说要好得多。IntelliJ有一个很好的代码分析器,可以很容易地找到这类东西。我是Eclipse的长期用户,但IntelliJ对于Scala来说要好得多。非常感谢,这正是我所需要的。我对Scala还是新手,所以尽可能多地学习。。。我会继续你的建议。:)这将是非常有帮助的,如果你能建议一些链接来参考学习scala的高级功能,否则我只有在试图解决一些问题时才知道这些方法。非常感谢,这正是我所需要的。我对Scala还是新手,所以尽可能多地学习。。。我会继续你的建议。:)如果你能为学习scala的高级功能提供一些参考链接,这将非常有帮助,否则我只有在尝试解决一些问题时才知道这些方法。你应该接受另一个答案。实际答案是……你应该接受另一个答案。实际答案是。。