首页 > 解决方案 > 如何访问 scala 对象中的嵌套函数

问题描述

我正在尝试访问嵌套函数。我可以访问 func1,但在尝试访问 func2 时遇到了问题。

//尝试调用不同类中的方法

val t1 = test
t1.func1()
t1.func1(df).func2("test")

object test {
    def func1 (df: dataframe): tt = {

      def func2 (ab: String): String =  {
        // do something
      } else {
        // do nothing
      }

      def func3 (ab2: String): String = {
        //do something
      } else {
        // do nothing
      }

    }

  val t1 = test
  t1.func1()
  t1.func1(df).func2("test")

我期待访问 func2 没有任何错误

标签: scalaapache-spark

解决方案


您可以将其视为func2嵌套变量的等价物。您无法在其父函数之外访问它。

尝试更改一些内容以使此示例更加明显:

object test {
    def func1 (df: dataframe): String = {
        val data = "hi"
        "bye"
    }
}
val t1 = test
t1.func1(df).data

您希望能够访问data这里吗?

如果您尝试对func2外部进行引用func1,您将收到编译器错误。

如果您需要访问func2并且没有任何其他限制,我建议您在func1.


推荐阅读