例如,List[T] forSome { type T }
相當於List[_]
,但是對於forSome
的每種可能的用法都適用這種情況,還是在某些情況下forSome
不能被等價的第二種語法所取代?`forSome`的所有用法都可以被`_`的等價用法所取代嗎?
12
A
回答
15
不,不是所有的用法都可以這樣轉換。像這樣的東西(感謝返璞詞,下面,誰應該得到在這一個upvotes)
def foo(xs: Map[T, T] forSome { type T})
這裏的關鍵是,我可以使用存在一個以上的地方,但是一樣的existential。顯然,如果你使用的是通配符,你可能會提到不同的存在
14
_
在此上下文中是「存在類型的佔位符語法」,如language specification的3.2.10中所述。
名稱聽起來很像另一個使用_
「匿名函數的佔位符語法」。這種簡寫不能用於所有功能。例如:
(a: A) => f(g(a))
f(g(_: A)) // WRONG, this means f((a: A) => g(a))
我們可以構造爲existentials一個類似的例子,這是不能被表示_
:
F[G[A]] forSome { type A }
F[G[_]] // WRONG, this means F[G[A] forSome { type A }]
邊注:existentials是不的值電平函數的類型電平模擬。這將是:
({type l[A] = F[G[A]])#l
其實這是一個遺憾,斯卡拉用來existentials下劃線,而不是類型級別的功能。
UPDATE
讓我以同樣的方式幀@oxbow_lakes的回答:
(a: A) => h(a, a)
h(_, _) // WRONG, this means (a, b) => f(a, b)
H[A, A] forSome { type A }
H[_, _] // WRONG, this means H[A, B] forSome { type A; type B }
+0
對於Some {type A}和F [G [A] for Some {type A}]的F [G [A]]有什麼區別? – user482745 2012-03-09 08:42:08
相關問題
- 1. 「forSome`的所有用法都可以用`_`的等價用法來替代嗎?」
- 2. 所有的JavaScript功能都可以在理論上被Silverlight取代嗎?
- 3. 所有的REST方法都是冪等的嗎?
- 4. 當使用Spring AOP時,所有方法都是代理嗎?
- 5. Android Studio顯示所有紅色錯誤但所有的代碼都可以嗎?
- 6. ggplot2的所有功能都可以在Python中使用嗎?
- 7. 在sharepoint 2010中可以獲取用戶所屬的所有組嗎? (無代碼)
- 8. 所有的類方法都是用「def self.foo」定義的嗎?
- 9. 有沒有辦法讓所有活動都可用的功能?
- 10. 除了問號'?'以外所有的東西都被替換了使用取代()
- 11. github上的所有android代碼都可以免費使用
- 12. 所有遞歸結構都可以被非遞歸解決方案替代嗎?
- 13. Application.SysCmd方法的所有可能用法
- 14. 所有頁面都可以使用Magento設計嗎?
- 15. 所有第三方JavaScript SDK都可以使用NativeScript嗎?
- 16. 我可以在所有活動中使用價值嗎?
- 17. 在Scala中可以用'等價方法表示kotlin'嗎?
- 18. Firebase中的所有數據都可以提供給所有人嗎?
- 19. CountDownEvent不會等到所有信號都被調用
- 20. 所有類都可用的變量?
- 21. 有沒有辦法讓MP4在所有瀏覽器上都可以使用VideoJS?
- 22. 是否所有python魔術方法都可用於所有對象
- 23. 所有界面方法都無法被覆蓋
- 24. python對所有內置函數都有神奇的方法嗎?
- 25. 所有的異步IO nodejs代碼都使用libuv嗎?
- 26. 我的.NET應用程序中的所有類都可以是內部的嗎?
- 27. 你可以使用javassist抓取項目中的所有類嗎?
- 28. GWT - TabPanel下的所有子控件都可以相同嗎?
- 29. 所有端口都可路由嗎?
- 30. 使用LINQ聲明數組的所有成員都是等價的?
在這個例子中,沒有。說實話,我不是100%確定它是有效的語法,並沒有機會檢查。但我已經看到類似的例子 – 2012-02-26 16:37:41
事實上,我只是用scala 2.9.1試過,而且它不能編譯**!你能解決它嗎,我不能爲你做,我從來沒有使用/需要'forSome'構造。 – paradigmatic 2012-02-26 16:54:19
根據反光詞建議的線條修正 – 2012-02-26 18:04:16