sch*_*eho 35
使用if时,你有falsy情况下,只有一个truthy和一个你并不需要一个隐含的do块.相比之下,when当你只需要处理真实案例和隐含时,应该使用它do.速度没有区别,这是使用最惯用的风格.
(if (my-predicate? my-data)
(do-something my-data)
(do-something-else my-data))
(when (my-predicate? my-data)
(do-something my-data)
(do-something-additionally my-data))
Run Code Online (Sandbox Code Playgroud)
在if情况下,只有do-something将运行,如果my-predicate?收益在一个truthy结果,而when情况下,两个do-something和do-something-additionally执行.
使用if时,你有两种不同的表现:对true条款和false条款.
when并且when-not在两种情况下有用:
do有条件地执行一个或多个(隐式帮助)非纯操作时;true(或者false在某种情况下when-not)时评估某些东西,并nil以相反的情况返回.唯一的区别是假或零的回报
有没有重大的区别false,并nil作为评估都以false在逻辑上下文.