【问题标题】:I have a function, that's invoked 12 times with different arguments, is it okay to have in code 12 function calls in a row? [closed]我有一个函数,用不同的参数调用了 12 次,可以在代码中连续调用 12 个函数吗? [关闭]
【发布时间】:2022-01-01 20:29:51
【问题描述】:

我有一个函数,用不同的参数调用了 12 次,可以在代码中连续调用 12 个函数吗?在我的纸牌游戏中,该功能将牌从牌组抽到玩家手中。

drawCard(userHand);
drawCard(userHand);
drawCard(bot1Hand);
drawCard(bot1Hand);
drawCard(bot2Hand);
drawCard(bot2Hand);
drawCard(bot3Hand);
drawCard(bot3Hand);
drawCard(bot4Hand);
drawCard(bot4Hand);
drawCard(bot5Hand);
drawCard(bot5Hand);
drawCard(dealerHand);
drawCard(dealerHand);
drawCard(dealerHand);

【问题讨论】:

  • 既然你已经用函数式编程标记了这个,我很想保留一个玩家列表,然后将他们的手画到一个Pair类型的列表中。对于它的价值,你可以调用一个函数 12 次就可以了。看起来您的 drawHand fn 可能没有返回值?这可能不适合您的 FP 标签。
  • 是的,我的函数没有返回值,但这是临时的
  • "可以在代码中连续调用 12 个函数吗?" - 一般来说,可以使用不同的参数多次调用一个函数,如果这样的话正是你需要做的。如果这些论点足够相似以至于您无法再轻松区分它们,那就不行了 - 实际上,在发布的示例中,您调用了 drawCard 15 次,而不仅仅是 12 次!
  • 根据什么或谁确定?

标签: javascript functional-programming


【解决方案1】:

是的,这本身并没有什么问题。

选项 1:

如果您想让您的代码更具可读性,您可以将所有的手添加到一个列表中,并在列表中循环调用每个元素的函数。

let hands = [userHand, bot1Hand, bot2Hand, ...];

for (const hand of hands) {
    drawCard(hand)
}

选项 2:

我看到您每次调用该函数两次。因此,您可以使用循环在 drawCard() 函数中运行代码两次,以便将函数调用量减半。

选项 3:

您可以在 drawCard() 中添加另一个参数,该参数包含您要抽的牌张数,然后返回抽出牌的列表。

【讨论】:

  • 选项 2 听起来最相关。我不知道游戏规则,但如果是“每个玩家抽 2 张牌,然后庄家抽 3 张”,代码应该会反映这一点。
【解决方案2】:

你可以试试这样的:

function test(a){
    console.log(a);
}

my_list = [1,2,3,4,6,7]

for (const num of my_list) { test(num); }

在您的示例中,my_list 将是:

my_list = [userHand, userHand, bot1Hand, bot1Hand ...]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多