如何调用接受Void类型值的scala函数
如何调用这样的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()调用它,或者对于不返回任何
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
有什么关系?Typenull
(其中null
是一个实例)是所有引用类型的子类()Void
是一种引用类型(对象的子类,也称为AnyRef
)。f(null)
可能?像一个符咒一样工作!但是为什么null
工作,它与Void
有什么关系?Typenull
(其中null
是一个实例)是所有引用类型的子类()Void
是一种引用类型(是Object
的子类,也称为AnyRef
)。