为什么我会得到';cps意外转变';关于Scala延续的信息

为什么我会得到';cps意外转变';关于Scala延续的信息,scala,continuations,Scala,Continuations,所以我有以下代码(做练习4): 我正在使用scala 2.10.0进行编译,并收到以下警告: CWSO.scala:3: warning: expression matchEnd9(x: Int){ x } is cps-transformed unexpectedly def times(lst: List[Int]): Int@cps[Int] = lst match { ^ one warnin

所以我有以下代码(做练习4):

我正在使用scala 2.10.0进行编译,并收到以下警告:

CWSO.scala:3: warning: expression matchEnd9(x: Int){
  x
} is cps-transformed unexpectedly
  def times(lst: List[Int]): Int@cps[Int] = lst match {
                                            ^
one warning found

我写代码的方式有问题吗?我该怎么做才能避免警告?代码似乎做了正确的事情(当0是第一个元素时,将数字相乘并提前中止)。

这闻起来像是一个错误,并且被报告为这样:

我不确定,但它可能与表达式在不同情况下的评估不同有关,因此,编译器警告,匹配值
lst
不应总是实际进行cps转换。这只是一个猜测。在所有情况下,您都可以尝试使用shift
shift
进行换行,以检查警告是否消失。@宝塔5b,我确实尝试过使用shift
shiftUnit[Int,Int,Int](1)
以及
shiftUnit[Int,Int,Int](第一次)*次(其余)
进行换行,但仍然收到了警告。
CWSO.scala:3: warning: expression matchEnd9(x: Int){
  x
} is cps-transformed unexpectedly
  def times(lst: List[Int]): Int@cps[Int] = lst match {
                                            ^
one warning found