我正在使用嵌入在另一个应用程序中的zeppelin。齐柏林飞艇版本为0.6.1-SNAPSHOT。定义以下案例类我收到错误
case class GenRandInt(lb : Int, ub : Int)
{
val rnd = new scala.util.Random
def next() : Int = { lb + rnd.nextInt(ub) }
}
defined class GenRandInt
<console>:40: error: not found: value lb
def next() : Int = { lb + rnd.nextInt(ub) }
代码在IDE中成功执行。可能出现什么问题?
答案 0 :(得分:4)
问题是由于缩进造成的。
阶&GT; :糊 //进入粘贴模式(ctrl-D完成)
case class GenRandInt(lb : Int, ub : Int)
{
val rnd = new scala.util.Random
def next(): Int = { lb + rnd.nextInt(ub) }
}
// Exiting paste mode, now interpreting.
defined class GenRandInt
scala>
在scala中,我们可以使用缩进来定义案例类。所以我认为这是zepplin中火花解释器的问题,或者可能是火花本身。 (在scala 2.10.6上测试,使用scala 2.10.6构建的zeppelin 0.7.0-SNAPSHOT)
答案 1 :(得分:2)
问题是Zeppelin没有:粘贴模式所以第一行:
case class GenRandInt(lb : Int, ub : Int)
...被发送到解释器,然后是下一个块:
{
val rnd = new scala.util.Random
def next() : Int = { lb + rnd.nextInt(ub) }
}
......被解释为一个独立的代码块。
当你将{
放在与案例类相同的行中时,Zeppelin会理解下一行是前一段代码的一部分(直到你关闭}
)。
我看到的与此问题相关的一个技巧是将两个句子放在同一行上; (例如对于伴侣对象),类似于:
case class XXX () {
...
}; object XXX () {
...
}