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

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>
      主站蜘蛛池模板: 资溪县| 霍林郭勒市| 泽普县| 即墨市| 泸西县| 夹江县| 隆尧县| 襄城县| 长治市| 龙口市| 修水县| 巨野县| 琼海市| 利津县| 新建县| 介休市| 资溪县| 和顺县| 佳木斯市| 滨州市| 河曲县| 游戏| 海晏县| 金乡县| 永昌县| 景谷| 新泰市| 耒阳市| 峨眉山市| 牡丹江市| 饶阳县| 瓦房店市| 博爱县| 文昌市| 阿城市| 元氏县| 宜城市| 吐鲁番市| 当涂县| 姚安县| 昌图县|