Erlang --- 模式比對

來源:互聯網
上載者:User

標籤:

Erlang的模式比對功能非常強大,非常方便。

模式比對有如下重要作用:

1、選定控制流程分支

2、完成變數賦值(綁定)

3、拆解資料結構(選擇和提取各個組成部分)

運算子的左側是一個模式,右側是一個普通運算式,做匹配運算時,首先計算右側的運算式,得到一個值,接著拿該值去匹配左側的模式。若匹配失敗,則報錯,若匹配成功,在左側模式中出現的所有變數都會與右側值中的相應組成部分綁定,然後程式將繼續計算緊隨其後的運算式。

case get_roleequipinfo(RoleEquipId) of
   [] ->
      {false,_Err};   #ets_role_equip{resetAttack = Attack,resetCrit = Crit,resetHit = Hit,resetSpeed = Speed,resetDodge = Dodge,resetShield = Shield,resetDefence = Defence} = RoleEquipInfo ->......................................這種模式比對是這樣的:首先將get_roleequipinfo函數的傳回值匹配給變數RoleEquipInfo,然後變數再與前面模式比對,並一一賦值,很方便吧,簡直就是神奇! Reply =      case    X    of  {false,Error} ->    {false,Error};  _ ->    .....      end,  case Reply of  {false,_Error} ->    ......;  _ ->    .......   end.這種模式下特別注意Reply的值,因為Reply會在後面用到,所以要考慮Reply所有的值的可能性! testfun() ->   語句     case  X  of         A -> ......;        B -> ......;        C -> ......;   _ -> ......     end. 函數的傳回值是case of的傳回值。 

Erlang --- 模式比對

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.