什麼是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