•“返回”小镇( RETURN TO SENDER )151~165
第 151 关挑战
使用 返回 return 指令,我们可以把某个 函数 function 的运算结果传送回来.
example = () ->
return not banana.rotten()
if example() #example() 函数返回 no
goto banana
else
turn 360
第 152 关挑战
通常函数 function 的 返回 return 结果取决于我们如何定义这个函数.
yummy = (x) ->
return not x.rotten()
for b in bananas
if yummy b
goto b
第 153 关挑战
healthy = () ->
return health() == 100
goto healthZone
until healthy()
wait()
goto banana
第 154 关挑战
healthy = () ->
return health() == 100
injured = () ->
return health() < 70
//#在这里使用 healthy() 函数和 injured() 函数
for b in bananas
goto b
if injured()
goto healthZone
until healthy()
wait()
第 155 关挑战
healthy = () ->
return health() > 99
//#这里应该是正常的,如果你已经修复了 healthy() 函数
goto healthZone
until healthy()
wait()
goto bush
goto banana
第 156 关挑战
safeFrom = (a) ->
return a.sleeping() or a.playing() //#或者 or ?
//#另一种调用有参数的函数的用法是使用小括号 '()'
until safeFrom(tiger)
wait()
goto banana
第 157 关挑战
safeFrom = (a) ->
return a.sleeping() or a.playing() //#修复这里吧
until safeFrom(tiger) and safeFrom(bear)
wait()
goto banana
第 158 关挑战
请写出一个函数 function , 以便让它 返回 return 肯定 yes 或者是 否定 no 的结果.
negative = () ->
return no //#改成 no 吧
positive = () ->
return yes //#这段代码是正常的
if negative()
goto bananas[0]
if positive()
goto bananas[1]
第 159 关挑战
在一个函数 function 里面,所有写在 返回 return 指令后面的内容都不会被执行.
foo = () ->
return yes
if foo()
goto banana
else
say "nope"
CodeMonkey过关学习笔记系列:160-165关
•“返回”小镇( RETURN TO SENDER )151~165
第 160 关挑战
until not crow.watching()
say "Boo!"
goto banana
第 161 关挑战
//请使用 说话 say 这个指令,直到安全为止.
safe = () ->
return not crow.watching()
//#使用 say 函数来吓走乌鸦 crow 吧
until safe()
say "x"
goto banana
第 162 关挑战
safe = () ->
if crows[0].watching()
return no
if crows[1].watching()
return no
#如果到达这里意味着两只乌鸦都没有在监控啦
return yes
#在这里使用 safe() 函数
goto banana
或者
safe = () ->
if crows[0].watching() or crows[1].watching() //0号或者1号乌鸦在监视,就是不安全的情况
return no
return yes
第 163 关挑战
safe = () ->
#只有乌鸦监控的时候才返回 yes
return not( crows[1].watching() or crows[0].watching())
until safe()
say "Go away!"
for b in bananas
goto b
第 164 关挑战
safe = () ->
return (not crows[0].watching() and not crows[1].watching() and not crows[2].watching())
或者
return not (crows[0].watching() or crows[1].watching() or crows[2].watching())
until safe()
say "Go away!"
goto banana
第 165 关挑战
safe = () ->
for c in crows
if c.watching()
return no //#这样是安全的吗?
//#如果到达这里意味着没有乌鸦在监控啦
return yes
until safe()
say "Go away!"
goto banana