我是Clojure的新手。我有以下表达式:
(= (__ "Dave") "Hello, Dave!")
(= (__ "Jenn") "Hello, Jenn!")
(= (__ "Rhea") "Hello, Rhea!")
Run Code Online (Sandbox Code Playgroud)
代替__
,必须在所有3个地方插入相同的表达式,以使在所有3种情况下的相等性检查均成立。在这一点上我已经提出str "Hello, "
。据我了解,这应该产生"Hello, Dave" "Hello, Jenn" "Hello, Rhea"
如何"!"
在每个字符串的和上放置标记?(我只能用“写”表达式代替__
)
谢谢
您想将函数放到的位置__
。
该函数应采用一个字符串,s
并应返回一个基于的字符串,s
以满足三个测试用例。
可能的功能是
(fn [s] (str "Hello, " s "!"))
Run Code Online (Sandbox Code Playgroud)
可以使用Clojure语法糖编写
#(str "Hello, " % "!"))
Run Code Online (Sandbox Code Playgroud)
从而
(= (#(str "Hello, " % "!") "Dave") "Hello, Dave!")
Run Code Online (Sandbox Code Playgroud)
奖励:使用测试框架
Clojure带有一个不错的测试库clojure.test(我不知道为什么将其称为API,这意味着可调用函数的另一端有一个组件;它只是一个库)
我们可以使用测试库取得良好的效果:
(require '[clojure.test :as t]) ; make library visible
(def myfun (fn [s] (str "Hello, " s "!"))) ; our function as symbol myfun
(t/deftest test-stringmanip
(t/is (= (myfun "Dave") "Hello, Dave!"))
(t/is (= (myfun "Jenn") "Hello, Jenn!"))
(t/is (= (myfun "Rhea") "Hello, Rhea!")))
(t/run-tests) ; do it!
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
90 次 |
最近记录: |