【发布时间】:2014-01-06 22:31:47
【问题描述】:
我一直在 learnstreet 上解决这个二十一点问题:
http://www.learnstreet.com/cg/simple/project/blackjack#get-hint
我被最后一个方法 getStrategy() 卡住了——这里描述了如何完成任务:
“这种方法模拟庄家的策略,以便他知道何时打牌和何时站牌——即何时接受另一张牌并冒“爆牌”和破 21 的风险,或用当前手牌停止并希望他的对手不会击败他的号码。
这是一个特殊的函数,因为它返回的对象本身就是一个函数。 (这怎么疯了?)它接受'n',即庄家手牌的整数分数,此时庄家的策略是击牌或站立。 (二十一点经销商通常会在他的牌总点数少于 17 点时被击中,所以在这种情况下 n 将是 17。)
这个方法需要返回的内容应该是“return function(currenthand){};”的形式在哪里填写花括号 ({}) 内的内容。当前手牌将提供给函数调用,您需要编写一些逻辑,让庄家将当前手牌点数与“n”进行比较。”
LearnStreet 以这种方式实现 getSrategt():
function getstrategy(n) {
return function(currenthand) {
return (countpoints(currenthand) < n);
}
}
getStrategy() 方法在 applyStrategy 方法中调用如下:
/*
This function applies the strategy you define in getstrategy(n): DON'T CHANGE
*/
function applystrategy(hand, n) {
var strat = getstrategy(n);
return strat(hand);
}
谁能解释一下我们为什么要返回 (countpoints(currenthand)
【问题讨论】:
-
@AlienArrays 这不是一个函数中的两个返回。
getstrategy正在返回一个匿名函数,该函数返回countpoints(currenthand) < n)的比较结果,这是一个布尔值。
标签: javascript