回答
它意味着您可以运行的一段代码。
因此,例如:
scala> def doTwice(op: =>Unit) = {op; op}
doTwice: (op: => Unit)Unit
scala> doTwice({println("Hi")})
Hi
Hi
在这种情况下,=>Unit
是{println("Hi")}
这里的 “SOMETYPE” 为单位,因为println
不产生价值。如果它产生了Int
,那将是=>Int
。
这只是一种不带参数的函数值。 Owen的例子很酷,只知道“A => B”是一个函数,其参数具有类型A,返回值类型为B,“=> B”是不带参数并返回的函数一个B型值。
它表示两件事。首先,由于前缀=>
,它表示参数将通过by name。然后,它表示传递参数的类型必须是SomeType
。
有人混淆了这两个,认为=> SomeType
是一种类型 - 它不是。它是两件事的结合:参数评估策略和参数类型。
因此,由名字叫简要说明,如果维基百科的链接并没有把事情说清楚,如果你有这样的:
def f[A](x: => A) = { x; x }
f(some stuff)
然后斯卡拉将这样执行此:
{ some stuff; some stuff }
论价值的看涨,会发生什么情况更是这样的:
val x = some stuff
{ x; x }
还要注意参数是总是按价值评估,但只有一次。按名称呼叫时,参数决不会被评估(例如,如果它位于if
的非执行分支上),但可以多次评估。
[A]在这种情况下代表什么?我曾在很多地方看过它,但仍然没有看到它 –
@elimence这是一个_type parameter_。它是一种在声明'f'处未知的类型,但在使用'f'的点处已知。函数'f'对所有类型'A'都是有效的,在这种情况下,'A'可以是什么都没有限制。我可以使用'A <:SomeConcreteType'来表示下边界('A'必须是SomeConcreteType或它的子类型),'A>:SomeOtherType'('A'必须是'SomeOtherType'的超类) ,并且指出'A'必须是某个隐含参数的一部分,这会导致对'A'的任意限制。 –
谢谢丹尼尔,现在就明白了 –
- 1. 什么“ID <someType> variableName”是什么意思在Objective-C
- 2. Groovy,什么意思 - >意思是
- 3. “=>”是什么意思?
- 4. “ - >”是什么意思?
- 5. {< >}是什么意思?
- 6. <+>是什么意思?
- 7. '=>'是什么意思?
- 8. <>是什么意思?
- 9. <>是什么意思?
- 10. “outer =>”是什么意思?
- 11. “=>”是什么意思?
- 12. `^^^`和`〜>`是什么意思?
- 13. “ - >”是什么意思?
- 14. `()=> Unit`是什么意思?
- 15. class Foo {this:SomeTraitType =>是什么意思?
- 16. 是什么意思:是什么意思?
- 17. “typedef sometype sometype”有什么意义?
- 18. Scala中的protected [session]是什么意思?
- 19. 这个Scala语法是什么意思(_ *)?
- 20. 在Scala中_ ::是什么意思?
- 21. > +和> - 是什么意思在C#
- 22. a >> = b是什么意思?
- 23. >>和0xfffffff8是什么意思?
- 24. 这是什么意思? >> ActionController :: InvalidAuthenticityToken
- 25. “somevar >> 0”是什么意思?
- 26. 在Scala类型参数中, - >>和 - >>>是什么意思?
- 27. 什么是(int - > int) - >(int - > int)是什么意思?
- 28. “ptr = ptr - > next”这是什么“ - >”是什么意思? (C++)
- 29. Scala - 什么是类型输入,Input.Source和Input.Offset是什么意思?
- 30. =>在php中是什么意思?
哦,我明白了。谢谢!这是我讨厌scala的原因。这是很荒唐的谷歌这样的事情:)感谢上帝的好人和计算器:) – Arg
不错的例子。在这里,“op”被称为* call by *参数(而不是*由值*)。请注意,编写'doTwice(println(“Hi”))''同样适用。当你在Scala中调用一个函数时,语法不会指出你是通过* name *还是* value *传递参数。 –
@Arg [SymbolHound](http://symbolhound.com/)是你的朋友。 –