Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala中作为函数接口的Pass方法_Scala - Fatal编程技术网

Scala中作为函数接口的Pass方法

Scala中作为函数接口的Pass方法,scala,Scala,我需要在Scala中以io.debezium.config.Field.Validator的形式传递一个public static int isRequired(配置配置、字段、验证输出问题) 而在Java中,这只是一个调用MyObject::isRequired我似乎无法使它在Scala中工作 我尝试通过以下方式手动包装处理程序(MyObject.isRequired): def handler[Valid](h: Valid) = new Field.Validator {

我需要在Scala中以
io.debezium.config.Field.Validator
的形式传递一个
public static int isRequired(配置配置、字段、验证输出问题)

而在Java中,这只是一个调用
MyObject::isRequired
我似乎无法使它在Scala中工作

我尝试通过以下方式手动包装
处理程序(MyObject.isRequired)

def handler[Valid](h: Valid) =
    new Field.Validator {
        override def validate(config: Configuration, field: Field, problems: Field.ValidationOutput): Int =
            h(config, field, problems)
    }
但不管出于什么原因,Scala处理方法引用的方式似乎与我预期的不同


使此编译/工作的最简单方法是什么?

在这种情况下工作的方法是:

def handler(h: (Configuration, Field, Field.ValidationOutput) => Int): Field.Validator =
    new Field.Validator {
        override def validate(config: Configuration, field: Field, problems: Field.ValidationOutput): Int =
            h(config, field, problems)
    }
所以我的问题有两方面:

  • 忘记指定返回类型
  • 我假设
    Valid
    的类型是
    (配置、字段、字段.ValidationOutput)=>Int
    ,显然不是这样。至少有一点Scala类型的系统我似乎还没有完全理解