Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.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符号_Scala - Fatal编程技术网

试图理解这个scala符号

试图理解这个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) }

我是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)
}
} }

这被称为:

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,实际上意味着此方法不返回任何值 可能的副本也可能的副本也