vector – Clojure – 为一个人定义一个数据结构
发布时间:2020-12-15 04:33:57 所属栏目:Java 来源:网络整理
导读:在其他语言中,如何创建结构是非常不言自明的.你会如何在Clojure中做这样的事情? 例如,我想添加一个人的姓名,地址和电话号码(家庭和移动电话). 我猜我想制作一个载体? 提前致谢! 解决方法 在Clojure中,您通常会使用地图来表示这种数据.你可以使用平面地图
在其他语言中,如何创建结构是非常不言自明的.你会如何在Clojure中做这样的事情?
例如,我想添加一个人的姓名,地址和电话号码(家庭和移动电话). 我猜我想制作一个载体? 提前致谢! 解决方法
在Clojure中,您通常会使用地图来表示这种数据.你可以使用平面地图:
{:first-name "Jeremy" :last-name "Martinson" :street "455 Larkspur Dr." :city "Baviera" :state "California" :zip 22611 :home-phone "(555) 555-5555" :mobile-phone "(666) 666-6666"} 或嵌套的: {:name {:first "Jeremy" :last "Martinson"} :address {:street "455 Larkspur Dr." :city "Baviera" :state "California" :zip 22611} :phones {:home "(555) 555-5555" :mobile "(666) 666-6666"}} 如果您的数据具有或多或少的静态架构并且您想要使用Clojure’s polymorphic features,则可以使用records: (defrecord Name [first last]) (defrecord Address [street city state zip]) (defrecord Phones [home mobile]) (defrecord Person [name address phones]) (map->Person {:name (map->Name {:first "Jeremy" :last "Martinson"}) :address (map->Address {:street "455 Larkspur Dr." :city "Baviera" :state "California" :zip 22611}) :phones (map->Phones {:home "(555) 555-5555" :mobile "(666) 666-6666"})}) 但是,在这种情况下,您可能只想使用地图.特别是电话记录非常难看. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |