首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在spark-shell中加载伴生对象

在spark-shell中加载伴生对象
EN

Stack Overflow用户
提问于 2015-05-26 02:15:09
回答 2查看 2.6K关注 0票数 3

当我在spark-shell中使用:load时,它看起来好像是单独读取行,因此伴生对象不是在同一个“源”文件中读取的。:paste似乎不接受参数。

以前,我使用代码构建jar并将其加载到spark-shell中,但为了简单起见,我希望将其作为脚本运行。有没有人有喜欢的变通方法?

EN

回答 2

Stack Overflow用户

发布于 2015-05-26 02:44:07

一个足够新的文件将会有:粘贴文件。

或者,作为一种解决办法,可以通过以下方式链接模板:加载它们:

代码语言:javascript
复制
class C(i: Int) {
  def c = { println("C..."); i }
}; object C {
  def apply(i: Int = 42) = new C(i)
}

或,

代码语言:javascript
复制
scala> (new $intp.global.Run) compile List("C.scala")

scala> new C().c
C...
res1: Int = 42

更多API:

代码语言:javascript
复制
scala> import reflect.io._
import reflect.io._

scala> import reflect.internal.util._
import reflect.internal.util._

scala> val code = File("C.scala").slurp
code: String =
"
class C(i: Int) { def c = { println("C..."); i } }
object C { def apply(i: Int = 42) = new C(i) }
"

scala> $intp interpret code
defined class C
defined object C
res0: scala.tools.nsc.interpreter.IR.Result = Success

scala> C()
res1: C = C@f2f2cc1

类似地,

代码语言:javascript
复制
scala> $intp interpret s"object X { $code }"
defined object X
res0: scala.tools.nsc.interpreter.IR.Result = Success

scala> X.C()
res1: X.C = X$C@7d322cad

我的启动脚本定义:

代码语言:javascript
复制
implicit class `interpreter interpolator`(val sc: StringContext) { def i(args: Any*) = $intp interpret sc.s(args: _*) }

代码语言:javascript
复制
scala> i"val x = 42"
x: Int = 42
res0: scala.tools.nsc.interpreter.IR.Result = Success
票数 3
EN

Stack Overflow用户

发布于 2015-05-26 04:17:19

这个compile技巧似乎不适用于“脚本”文件。它需要一个可由scalac编译的源文件,其中所有的valdef声明都在一个类型中。

因此,一种适用于:load的替代技巧是在另一个对象中编写case类和伴生对象。在这里,我只是粘贴了代码,没有使用:paste,但它也可以使用:load

代码语言:javascript
复制
scala> object O {
     |   case class C(s: String)
     |   object C {
     |     def apply() = new C("<no string>")
     |   }
     | }
defined module O

scala> O.C()
res0: O.C = C(<no string>)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30443908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档