试图理解这个scala符号
我是Scala新手,在尝试理解Scala中的含义时,我很难理解[A]f:=>A部分。谁能解释一下吗试图理解这个scala符号,scala,Scala,我是Scala新手,在尝试理解Scala中的含义时,我很难理解[A]f:=>A部分。谁能解释一下吗 object Helpers { implicit class IntWithTimes(x: Int) { def times[A](f: => A): Unit = { def loop(current: Int): Unit = if(current > 0) { f loop(current - 1) } loop(x) }
object Helpers {
implicit class IntWithTimes(x: Int) {
def times[A](f: => A): Unit = {
def loop(current: Int): Unit =
if(current > 0) {
f
loop(current - 1)
}
loop(x)
}
}
}
这被称为:
scala> import Helpers._
import Helpers._
scala> 5 times println("HI")
HI
HI
HI
HI
HI
参考资料:让我们来看看这个方法声明:
def times[A](f: => A): Unit
def:用于定义方法的关键字
times:方法名
[A] :一个名为A的类型参数。这意味着此方法接受一个类型参数,该参数可以显式传递,例如通过调用times[Int]。。。或者隐式调用时间。。。并让编译器在调用该方法时推断类型。有关更多详细信息,请参阅
f:=>A:这些是方法的值参数,在本例中,只有一个这样的参数,名为f,类型为A,这就是我们声明的类型参数!。=>表示此参数是按名称调用参数,请参阅
:Unit:这是方法的返回类型-定义为Unit,实际上意味着此方法不返回任何值
让我们分析一下这个方法声明:
def times[A](f: => A): Unit
def:用于定义方法的关键字
方法:name times
[A] :一个名为A的类型参数。这意味着此方法接受一个类型参数,该参数可以显式传递,例如通过调用times[Int]。。。或者隐式调用时间。。。并让编译器在调用该方法时推断类型。有关更多详细信息,请参阅
f:=>A:这些是方法的值参数,在本例中,只有一个这样的参数,名为f,类型为A,这就是我们声明的类型参数!。=>表示此参数是按名称调用参数,请参阅
:Unit:这是方法的返回类型-定义为Unit,实际上意味着此方法不返回任何值
可能的副本也可能的副本也