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
在逻辑上下文.