前言

?動態(tài)類型語言,少了靜態(tài)類型語言必須聲明變量類型的累贅,但也缺失了編譯時類型檢查和編譯時優(yōu)化的好處。cljs雖然作為動態(tài)類型語言,但其提供Metadata讓我們在必要的時候可選擇地補(bǔ)充類型提示,以便提高代碼可讀性和供編譯器優(yōu)化使用。除了上述以外,Metadata還讓我們在不影響對象本質(zhì)的前提下,附加額外信息增強(qiáng)元編程能力。

Metadata附加的目標(biāo)

?首先要明確一點的是,Metadata不是任何對象/值都擁有的。只有如下的對象才可附加Metadata

  1. Symbol

  2. Var

  3. Collections(List,Map,Vector,Set)

  4. Record

  5. Type

meta讀取Metadata

?通過meta我們可以獲取對象的Metadata,若沒有則返回nil。
示例1:獲取Var的Metadata

(def a 1)(meta #'a);;=> {:ns cljs.user, :name a, :file "<cljs repl>", :end-column 7, :source "a", :column 1, :line 1, :end-line 1, :arglists (), :doc nil, :test nil}

?上述示例1中是

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式