精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

Clojure 1.9引入Spec和更多語言特性

責任編輯:editor004

作者:Sergio De Simone

2017-12-15 11:19:00

摘自:INFOQ

正如InfoQ之前報道的,最近發布的Colojure 1 9中最有趣的新特性是Spec,它為數據和函數的規范和測試提供了一個標準化集成系統。如果您想要使用在不同命名空間中定義的key,那么可以使用新的map命名空間語法:

正如InfoQ之前報道的,最近發布的Colojure 1.9中最有趣的新特性是Spec,它為數據和函數的規范和測試提供了一個標準化集成系統。

考慮到之前其它的合同系統(contract systems)所做的工作,比如說Racket,Spec的目標是使Clojure代碼的自動驗證成為可能,同時還要支持其它功能,比如生成測試、錯誤報告、代碼析構等等。下面這個例子向你展示了你該如何通過使用spec/keys來規范化一個map:

(spec/keys :req [::x ::y (or ::secret (and ::user ::pwd))] :opt [::z])

在map規范中使用的key在某種程度上讓人想起了在其他語言中受歧視的union標簽,因為在全局的命名空間中定義了它們的類型:

(spec/def ::x integer?)(spec/def ::y integer?)(spec/def ::z integer?)(spec/def ::secret string?)

這就意味著,在同一模塊中定義的任何map中,相同的類型規范都會被應用到出現的給定key上。如果您想要使用在不同命名空間中定義的key,那么可以使用新的map命名空間語法:

#:types{ :x 1 :y 2 :secret "xyz" }

這會被解釋為:

{ :types/x 1 :types/y 2 :types/secret "xyz }

雖然現在Clojure 1.9是一個穩定版本,但是Spec仍然處于alpha測試階段,并且要使用它必須要引入相應的庫文件。處于alpha階段意味著不能保證其API的兼容性。

為了提升Spec的表達能力,Clojure 1.9提供了許多新的斷言(predicates),包括boolean?、 double?、simple-symbol等等。在編程語言方面,clojure.core引入了下列新的函數:

bounded-count:它能夠對集合中的元素進行計數,并且不需要在集合邊界外進行實現。 swap-vals! 和 reset-vals!:這是兩個新的原子(atomic)函數,它們能夠返回舊的和新的數值。 halt-when:它是一個transducer(推導式),當給定的斷言(predicates)被滿足時會結束推導。

Clojure 1.9還引入了許多性能的提升,包括對seq的優化以及析構、通過對派生類的緩存加速編譯等等。

在Mac上可以通過brew來安裝Clojure 1.9,在Linux可以用安裝腳本進行安裝。在Windows上,你仍然需要安裝Leiningen或Boot。

查看英文原文:Clojure 1.9 Brings Spec and More Language Features

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 鞍山市| 渭南市| 尉犁县| 永清县| 黄石市| 平南县| 新巴尔虎右旗| 故城县| 瑞丽市| 武穴市| 天镇县| 斗六市| 孟州市| 长白| 呼和浩特市| 盐城市| 酒泉市| 黑河市| 贺州市| 茂名市| 河池市| 新化县| 绥宁县| 长武县| 攀枝花市| 黄龙县| 淅川县| 五原县| 金川县| 莆田市| 阆中市| 河池市| 青阳县| 特克斯县| 双流县| 台北市| 河西区| 泰顺县| 利辛县| 苏尼特右旗| 老河口市|