相关疑难解决方法(0)

按名称重复参数

如何在Scala中传递名称重复参数?

以下代码无法工作:

scala> def foo(s: (=> String)*) = {
<console>:1: error: no by-name parameter type allowed here
       def foo(s: (=> String)*) = {
                   ^
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以将可变数量的名称参数传递给方法?

functional-programming scala variadic-functions lazy-evaluation

10
推荐指数
2
解决办法
1803
查看次数

特质抽象方法

如何使用需要存在的抽象方法定义特征,即使它可以具有不同的参数.我只想确保扩展特征的类具有方法和相同的返回类型.下面的示例(主要是说明性的)重载"添加"并给出需要定义"添加"的错误.我该如何更改Trait中的方法声明?

不幸的是,所有答案都不起作用.我不确定我是否清楚,但我不希望定义/检查的参数中有任何已定义的类型(任何,泛型,类型定义),因为它的类型和参数的数量可以改变,在我的返回的情况可能相同.我只是想要检查是否存在具有相同名称和返回的方法而忽略参数."任何"都不是替代品,因为它不是类型安全的,我想清楚地定义函数作为参数的期望.

例:

trait X{
  def add: Boolean
}

class Y extends X {
  def add(i: Int, s: String) : Boolean = {...}
}

class W extends X {
  def add(i: Int, y: Int, w: Set[String]) : Boolean = {...}
}
Run Code Online (Sandbox Code Playgroud)

scala

4
推荐指数
1
解决办法
697
查看次数

Scala:方法参数String*和Array [String]之间有区别吗

方法参数String*Array[String]?之间有区别吗?

安慰:

scala> def main(args: Array[String]): Unit = {}
main: (args: Array[String])Unit

scala> def main(args: String*): Unit = {}
main: (args: String*)Unit
Run Code Online (Sandbox Code Playgroud)

代码1:

object Example {
  def main(args: Array[String]): Unit = {
    println("Hello")
  }
}

>> Hello
Run Code Online (Sandbox Code Playgroud)

代码2:

object Example {
  def main(args: String*): Unit = {
    println("Hello")
  }
}

>> Exception in thread "main" java.lang.NoSuchMethodException: Example.main([Ljava.lang.String;)
    at java.lang.Class.getMethod(Class.java:1786)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:126)
Run Code Online (Sandbox Code Playgroud)

scala

3
推荐指数
1
解决办法
387
查看次数