什么是val Singleton4 : Set = set => set == 4
的详细方式?我无法理解set
参数来自哪里。集合来自哪里“val Singleton4:Set = set => set == 4”?
0
A
回答
2
它从任何地方都不是“来”,Set
被定义为从一个整数到布尔值的函数,并且Singleton4
的类型恰好是它需要一个整数并返回一个需要另一个整数并返回一个布尔值的函数:
scala> type Set = Int => Boolean
defined type alias Set
scala> def singletonSet(elem: Int): Set = set => set == elem
singletonSet: (elem: Int)Int => Boolean
scala> val p: Set = singletonSet(3)
p: Int => Boolean = <function1>
所以现在p
是一个函数,它接受一个整数:
scala> p(3)
res0: Boolean = true
scala> p(2)
res1: Boolean = false
写作的另一种方式是这样的:
def singletonSet(elem: Int) = (i: Int) => i == elem
val p: (Int) => Boolean = singletonSet(3)
或使用不同的方式,但实现同样的结果:
def singletonSet(elem: Int)(i: Int): Boolean = i == elem
val p: (Int) => Boolean = singletonSet2(3)
通过讨好的功能和应用只有一个参数,你回来仍需要另一个整数全面评价的功能。
3
你可能会困惑的是,事实上,Set
不是人们所期望的Scala库。你应该阅读的路线为:
val Singleton4: Int => Boolean = someArbitraryName => someArbitraryName == 4
// <identifier> <type> = <argument> => <returnValue>
0
其他的答案都非常好,但我想我会抛出一些额外的细节,帮助新人了解斯卡拉的符号更好(因为有批注中的一些隐藏的宝石没有发现/描述)。
让我们玩Scala编译器游戏吧!
以下val
对此类型所代表的Set
表示足够的说明。
val Singleton4: Set = set => set == 4
val
的类型明确给出 - 它是Set
。然而,我们并不太了解它。然而,在编译器可以使用之前它已经被赋予了,并且从左边看它是一个函数(介意=>
双字母字符串)从一个类型(我们稍后会介绍它)到Boolean
,因为set == 4
将不可避免地结束为Boolean
。
从set == 4
我们可以推断,set
只能Int
(这样你可以比较苹果到苹果),因此我们已经得到的set
类型为Int
。
的val
的=
的右侧也被写为:
val Singleton4: Set = (set: Int) => set == 4
所以,Singleton4
VAL是一个功能Int => Boolean
这就是所谓的Set
的一个实例。Set
“声明这样的某个地方上面(字典序):
type Set = Int => Boolean
您可以替代Set
的类型别名,并结了:
val Singleton4: Int => Boolean = (set: Int) => set == 4
相关问题
- 1. Silverlight 4 Datagrid,Set RowBackground
- 2. ExtJS 4 Set Reader
- 3. 检索Set集合的值?
- 4. Boost hana find set in set
- 5. SET NOCOUNT的最佳地点在哪里?
- 6. git push --set-upstream vs --set-upstream-to
- 7. 轻量级集合w/Set合同
- 8. Set Theory and .NET
- 9. Mongoid each + set vs Critera#set vs update_all + $ addToSet
- 10. 是否使用SET NAMES,SET CHARACTER SET编码INSERT值?
- 11. neo4j MERGE,SET,CASE
- 12. jquery set xml cdata
- 13. Boost disjoint set
- 14. Set Screen.WorkingArea.Width?
- 15. lower_bound in set(C++)
- 16. Scala JsoupBrowser set UserAgent
- 17. 在Set集合中绑定对象
- 18. SET A,0X1E VS集合A,0x1F的
- 19. Set Qt Widget mask
- 20. set setQueueXmlPath
- 21. $ SET->与目标=“_顶”
- 22. JRequest :: setVar与input-> set
- 23. ON DELETE SET <value>
- 24. Set AssemblyName.Version Property
- 25. java set exponent length
- 26. Binary Set Calculator Function
- 27. set-cookie2和set-cookie之间的区别
- 28. set-car!,set-cdr!在球拍中解禁?
- 29. Golang/mgo - set“$ set”用于更新
- 30. Integer Set的交集函数
什么转让的左手指在“VAL p:(Int)=> Boolean = singletonSet2(3)“我从来没有见过类似val p的语法:... – 2014-10-04 15:07:21
val p:(Int)=> Boolean'意思是'p'是一个函数,它接受一个整数并返回一个布尔值,如果你曾经使用集合并使用fold,map,reduce等等,检查它们的签名,它们都从一个泛型类型'A'中取出一些函数并返回一个泛型类型'B'它在scala语法中写成'f:A => B',这是'map'没有噪声的定义:'def map [B,That](f:A => B)' – 2014-10-04 15:59:15