在zeppelin中定义案例类失败

时间:2016-12-13 08:37:52

标签: scala apache-zeppelin case-class

我正在使用嵌入在另一个应用程序中的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中成功执行。可能出现什么问题?

2 个答案:

答案 0 :(得分:4)

问题是由于缩进造成的。

enter image description here

详细信息

阶&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 () { ... }