Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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
如何调用接受Void类型值的scala函数_Scala_Void - Fatal编程技术网

如何调用接受Void类型值的scala函数

如何调用接受Void类型值的scala函数,scala,void,Scala,Void,如何调用这样的scala函数 def f(v: Void): Unit = {println(1)} 我还没有在Scala中找到Void类型的值。Void,或者更具体地说,java.lang.Void,在 Void类是一个不可实例化的占位符类,用于保存 对表示Java关键字void的类对象的引用 在Scala中,没有关键字void,因此void类型在Scala中基本上是无用的。最接近的是没有参数的函数,即def:Unit={println(1)},您可以使用f或f()调用它,或者对于不返回任何

如何调用这样的scala函数

def f(v: Void): Unit = {println(1)}

我还没有在Scala中找到Void类型的值。

Void
,或者更具体地说,
java.lang.Void
,在

Void类是一个不可实例化的占位符类,用于保存 对表示Java关键字void的类对象的引用


在Scala中,没有关键字
void
,因此
void
类型在Scala中基本上是无用的。最接近的是没有参数的函数,即
def:Unit={println(1)}
,您可以使用
f
f()
调用它,或者对于不返回任何内容的函数,使用
Unit
类型,如您的示例所示

Void
,或者更具体地说,
java.lang.Void
,在

Void类是一个不可实例化的占位符类,用于保存 对表示Java关键字void的类对象的引用


在Scala中,没有关键字
void
,因此
void
类型在Scala中基本上是无用的。最接近的是没有参数的函数,即
def:Unit={println(1)}
,您可以使用
f
f()
调用它,或者对于不返回任何内容的函数,使用
Unit
类型,如您的示例所示

我相信在Java中使用
Void
/
null
与在Scala中使用
Unit
/
()
类似。考虑这一点:

abstract class Fun<A> {
  abstract public A apply();
}

class IntFun extends Fun<Integer> {
  public Integer apply() { return 0; }  
}

public static <A> A m(Fun<A> x) { return x.apply(); }
所以现在我们可以将
m
VoidFun
一起使用


在Scala中,不鼓励使用
null
,而是使用
Unit
(它只有一个值
()
),因此我相信您提到的方法是从Java调用的。要与Java兼容,Scala具有
null
,它是类
null
的唯一实例。它又是任何引用类的子类型,因此您可以将
null
赋值给任何引用类变量。因此,模式
Void
/
null
在Scala中也可以使用。

我相信在Java中使用
Void
/
null
与在Scala中使用
Unit
/
()
类似。考虑这一点:

abstract class Fun<A> {
  abstract public A apply();
}

class IntFun extends Fun<Integer> {
  public Integer apply() { return 0; }  
}

public static <A> A m(Fun<A> x) { return x.apply(); }
所以现在我们可以将
m
VoidFun
一起使用


在Scala中,不鼓励使用
null
,而是使用
Unit
(它只有一个值
()
),因此我相信您提到的方法是从Java调用的。要与Java兼容,Scala具有
null
,它是类
null
的唯一实例。它又是任何引用类的子类型,因此您可以将
null
赋值给任何引用类变量。因此,模式
Void
/
null
在Scala中也可以工作。

我在另一个代码库中读取了一个值为
Void
的类型,因此我编写了一个更简单的测试。当调用
f()
时,函数是否实际运行,或者它是否创建了一个部分应用的函数?编辑:我也意识到我没有真正回答你的问题:)不,你是对的。我还是错了。你能帮我看一看上面的一个并评论一下发生了什么吗?好吧,你可能可以运行部分应用的函数,即
val pF=f(41;
然后只运行
pF()
它对你有用吗?我仍然得到错误:
:14:error:没有足够的参数用于trait function 1中的method apply:(v1:Void)Unit。
我在另一个代码库中读取了一个值为
Void
的类型,所以我编了一个更简单的代码库进行测试。调用
f()
时,函数是否实际运行,还是创建了一个部分应用的函数?编辑:我也意识到我没有真正回答你的问题:)不,你是对的。我还是错了。你能帮我看一看上面的一个并评论一下发生了什么吗?好吧,你可能可以运行部分应用的函数,即
val pF=f(41;
然后只运行
pF()
它对你有用吗?我仍然得到错误:
:14:error:没有足够的参数用于trait function 1中的方法apply:(v1:Void)单元。
f(null)
可能?工作起来很有魅力!但是为什么
null
工作,它与
Void
有什么关系?Type
null
(其中
null
是一个实例)是所有引用类型的子类()
Void
是一种引用类型(对象的子类,也称为
AnyRef
)。
f(null)
可能?像一个符咒一样工作!但是为什么
null
工作,它与
Void
有什么关系?Type
null
(其中
null
是一个实例)是所有引用类型的子类()
Void
是一种引用类型(是
Object
的子类,也称为
AnyRef
)。