17
A
回答
35
描述讓我把if
俱樂部了。您使用if
有一個條件和可能的else
,就是這樣。當您有多個條件並且if
語句不夠用時,可以使用cond
語句,但最後,當您想要對某些數據進行模式匹配時使用case
語句。
讓我們通過實例說明:假設你想如果今天是下雨或米飯,如果不吃蘋果,那麼你可以使用:
if weather == :raining do
IO.puts "I'm eating apple"
else
IO.puts "I'm eating rice"
end
這是一個有限的世界,所以要擴大您的選項,因爲你會吃不同的東西在一定的條件,所以cond
說法是,像這樣:
cond do
weather == :raining and not is_weekend ->
IO.puts "I'm eating apple"
weather == :raining and is_weekend ->
IO.puts "I'm will eat 2 apples!"
weather == :sunny ->
IO.puts "I'm happy!"
weather != :raining and is_sunday ->
IO.puts "I'm eating rice"
true ->
IO.puts "I don't know what I'll eat"
end
最後true
應該在那裏,否則會引發異常。
那麼case
呢?它用於模式匹配的東西。讓我們假設你收到有關天氣和星期幾作爲一個元組的消息的信息,您取決於作出決定,你可以寫你的意圖是:
case { weather, weekday } do
{ :raining, :weekend } ->
IO.puts "I'm will eat 2 apples!"
{ :raining, _ } ->
IO.puts "I'm eating apple"
{ :sunny, _ } ->
IO.puts "I'm happy!"
{ _, :sunday } ->
IO.puts "I'm eating rice"
{ _, _ } ->
IO.puts "I don't know what I'll eat"
end
所以case
給您帶來的數據的模式匹配方法,您沒有使用if
或cond
。
14
我的答案很簡單:
cond
不接收參數,它可以讓你在每個分支使用不同的條件。case
收到一個參數,並且每個分支都是模式匹配反對論點。
相關問題
- 1. if和cond的區別?
- 2. JavaScript中的(cond && value || default_value)和(cond?value:default_value)之間是否有區別?
- 3. mini-kanren cond-a cond-u和cond-e的區別是什麼?
- 4. ==和case之間的區別?
- 5. Nhibernate和SubSonic有何區別?
- 6. MonoTouch和MonoDevelop有何區別?
- 7. MySQLi和PDO有何區別?
- 8. 4GL和DSL有何區別?
- 9. DELETE_ORPHAN和DELETE有何區別?
- 10. bcpow和pow有何區別?
- 11. V8和ES8有何區別
- 12. PopUpWindow和Dialog有何區別?
- 13. ifne和ifnonnull有何區別?
- 14. Ntxxx和ZWxxx有何區別?
- 15. MXML和Actionscript3有何區別
- 16. Progressbar和progressDialog有何區別?
- 17. Date.current和Date.today有何區別?
- 18. RMI和Corba有何區別?
- 19. beginTrackingWithTouch和touchesBegan有何區別?
- 20. ServletContext和ServletActionContext有何區別
- 21. DynaActionForm和ActionForm有何區別?
- 22. tincan和Scorm有何區別?
- 23. wcsncpy和wcscpy_s有何區別?
- 24. vbscript和vb.net有何區別?
- 25. REST和RESTful有何區別
- 26. PREMIRRORS和SOURCE_MIRROR_URL有何區別
- 27. jquery.js和jquery.lite.js有何區別?
- 28. Proctractor和Selenium有何區別?
- 29. Mocha和Supertest有何區別?
- 30. MD5CryptoServiceProvider和HMACMD5有何區別