2017-03-24 82 views
-3

的问题是以下内容:如何在scala中将类作为函数参数传递?

没有与这样的功能

def testExceptions(toTest: MyClass): Unit = { 
    val isException = try { 
      toTest.increaseValue(-200); 
      false 
    } catch { 
      case e: Exception => true 
    } 
    if (isException) { 
      // some actions 
    } else { 
      // another actions 
    } 
} 

该功能,其中MyClass被定义在文件中导入的模块。它有这样的说法

class MyClass(var value: Int) { 
    def show(): Unit = { 
      println(s"Value: $value") 
    } 
    def increaseValue(dv:Int): Unit = { 
      if(dv <= 0) { throw new IllegalArgumentException } 
      else { value += dv } 
    } 
} 

但因为它是这个函数存在的文件中未定义我不能通过MyClass对象模块功能testExceptions。如果我在这个文件中定义了MyClass,它将在testExceptions中使用。

我将不胜感激任何帮助解决我的困惑。

+1

目前尚不清楚你的问题是什么。请添加testExceptions的类相关代码,包括它们的导入和你得到的错误。 –

回答

3

如何在scala中传递一个类作为函数参数?

你不行。您只能传递对象作为参数。类不是对象,类是类型

可以使用反射来得到一个代理对象,代表类型和传递作为参数,虽然。

但我不能通过MyClass对象[...]

这是因为MyClass一个对象,它是一个类。您不能将类或任何其他类型作为参数传递给对象。

到模块功能testExceptions

注意testExceptions被定义为采取的参数是MyClass类型的值,它不不采取MyClass本身作为参数。您需要实例化MyClass的对象并将作为参数传递给

相关问题