当前位置: 首页 > 知识库问答 >
问题:

将带参数的方法调用转换为不带参数的函数

艾哲
2023-03-14

val d=显示_

如何对带有参数的方法调用做同样的事情。请查找下面的示例代码。

package paf

/**
  * Created by mogli on 8/27/17.
  */
object PafSample {

  def display(): Unit ={
    println("display is a no argument method")
  }

  def evenOdd(input : Int) : Unit = if(input % 2 == 0) println(s"$input is even")  else println(s"$input is odd")

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

    //This is working
    val d = display _
    executeFunction(d)

    //TODO : convert to a function call that takes no arguments,
    //       so that, it can be passed to executeFunction as parameter

    //val e = evenOdd(3) _
    //executeFunction(e)
  }

  def executeFunction[B](f : () => B) : B = {
    println("executing function")
    f()
  }
}

共有1个答案

谷翰飞
2023-03-14

那是行不通的。ExecuteFunction是一个接受函数的方法,该函数接受参数并返回Bevenodd接受int类型的单个参数,并生成unit,即int=>unit

您需要接受一个参数:

def executeSingleArgFunction[A, B](a: A)(f: A => B): B = {
    f(a)
}

后来呢:

executeSingleArgFunction(3)(evenOdd)
 类似资料:
  • 问题内容: 在Java 8中,具有以下类 可以通过方法引用来调用setBornTrue方法: 但是我将如何使用forEach方法并通过 方法引用 使用setBorn ?试: 导致错误“无法解析方法setBorn”。 另外,我该如何传递True的值? 问题答案: 使用lambda: 没有发现仅使用Java 8 API的其他方法。 使用此自定义功能: 你可以做: 如果Java API或库中提供了这种实

  • 问题内容: 我正在使用gwt uibinder。我想为字段动态设置值。我正在尝试这样的事情 并且该字段设置有这样的值 而且ValueStore有2种方法 问题是我无法调用getValue(key)。我只能调用no-args方法,这意味着以下操作是不可能的 请说明是否有一种方法可以实现,其中我可以调用传递了参数的方法。 问题答案: 不支持该方法,只能调用没有参数的方法。您将不得不直接将其公开为no

  • 问题内容: 是否可以通过以参数作为参数的javascript函数? 例: 问题答案: 使用“关闭”: 这将创建一个匿名的临时函数包装器,该包装器知道该参数并将其传递给实际的回调实现。

  • 嗨,我为tictactoe游戏编写了这个示例代码,除了checkWinner函数之外,其他都正常工作,它接受两个参数ArrayList和currentPlayer来检查胜利者。该函数在每个玩家在tictactoe游戏中查看获胜的点击单元格后调用。我不知道错误在哪里!事先谢谢你

  • 我试图模仿下面的行,但它在执行时给出了一个错误,它说: 此处检测到错误的参数匹配器: when(mock.get(anyInt())).thenreturn(null); doThrow(new RuntimeException()).When(mock).SomeVoidMethod(anyObject()); verify(mock).somemethod(contains(“foo”)) 这

  • 我正在通过XML配置和实例工厂方法实例化一些bean: 我实例化我的原型bean编程由BeanFactory.getBean(bean,参数...): 在Spring3中,我想切换到基于java的带注释bean配置。这是我的FactoryBean: 我的问题:如何在这里传递参数?上面的代码将org.springframework.beans.factory.NoSuchBean定义异常:没有类型[

  • 奖金f(a_3,(a_3+A_4)*4)可以捕捉所有的表达式,而不仅仅是(a_3,(a_3+A_4)?

  • 本文向大家介绍JavaScript函数参数使用带参数名的方式赋值传入的方法,包括了JavaScript函数参数使用带参数名的方式赋值传入的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript函数参数使用带参数名的方式赋值传入的方法。分享给大家供大家参考。具体分析如下: 这里其实就是在给函数传递参数的时候,可以使用 参数名:参数值的方式传递,这样不会传递错。不过下面的代码