clojure.string/replace spec

Because of dynamic params type of clojure.string/replace function, clojure.spec is going to fit in well here. Spec'ing:

(s/fdef clojure.string/replace
        :args (s/alt :string-string (s/cat :s string?
                                           :match string?
                                           :replacement string?)
                     :char-char (s/cat :s string?
                                       :match char?
                                       :replacement char?)
                     :pattern-string (s/cat :s string?
                                            :match pattern?
                                            :replacement string?)
                     :pattern-function (s/cat :s string?
                                              :match pattern?
                                              :replacement ifn?))
        :ret string?)

Let's see if it works!

(clojure.string/replace 1 2 3)
;-- Spec failed --------------------
;Function arguments
;  (1 ... ...)
;   ^
;should satisfy
;  string?

(clojure.string/replace "1" 2 3)
;-- Spec failed --------------------
;Function arguments
;  (... 2 ...)
;       ^
;should satisfy
;  string?
;or
;  char?
;or
;  pattern?

(clojure.string/replace "1" "2" 3)
;-- Spec failed --------------------
;Function arguments
;  (... ... 3)
;           ^
;should satisfy
;  string?

(clojure.string/replace "abc" \a :b)
;-- Spec failed --------------------
;Function arguments
;  (... ... :b)
;           ^^
;should satisfy
;  char?

(clojure.string/replace "abc" #"a" \b)
;-- Spec failed --------------------
;Function arguments
;  (... ... \b)
;           ^^
;should satisfy
;  string?
;or
;  ifn?

(clojure.string/replace "abc" #"a" "b")
;=> "bbc"

(clojure.string/replace "abc" #"a|b" {"a" "b", "b" "c"})
;=> "bcc"

huu2uan 29-11-2017

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Quan

10 bài viết.
2 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
1 0
Clojure supports flexible concurrency models for real world complexity: (Link): builtin support. (Link): similar to Golang concurrency model, w...
Quan viết 12 tháng trước
1 0
White
1 0
clojure (defn updatevalues m f & args] (reduce (fn r k v]] (assoc r k (apply f v args))) {} m)) (updatevalues {:a 1 :b 2 :c 3} inc) ;;= {:c 4,...
Quan viết 12 tháng trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
10 bài viết.
2 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!