gpt4 book ai didi

java - 在 "Clean Code,"中,可变数量的参数如何影响函数是单子(monad)、二元还是三元?

转载 作者:行者123 更新时间:2023-12-01 10:51:36 27 4
gpt4 key购买 nike

我正在读《干净的代码》一书。其中有一段关于传递给函数的变量参数以及如何命名函数 args。

Argument Lists Sometimes we want to pass a variable number of arguments into a function. Consider, for example, the String.format method:

String.format("%s worked %.2f hours.", name, hours);

If the variable arguments are all treated identically, as they are in the example above, then they are equivalent to a single argument of type List. By that reasoning, String.format is actually dyadic. Indeed, the declaration of String.format as shown below is clearly dyadic.

public String format(String format, Object... args)

So all the same rules apply. Functions that take variable arguments can be monads, dyads, or even triads. But it would be a mistake to give them more arguments than that.

void monad(Integer... args);
void dyad(String name, Integer... args);
void triad(String name, int count, Integer... args);

monad - 具有 1 个参数的函数,二元函数,二元函数 - 具有 2 个参数的函数,三元函数 - 3 个参数。

谁能解释一下这段话吗?我唯一得到的是这个:

即使你有许多相同类型的参数,你也可以将它们放在一个列表中,例如 - Integer ...args 意味着传递许多 int 参数。同时,程序员仍然应该遵循相同的建议 - 编写不超过 3 个参数的函数,二元函数仍然可以通过显示与 Object ...args 相同类型的参数来拥有 2 个参数。

我说得对吗,或者这段话还有其他含义吗?

最佳答案

作者只是想说,在计算函数是单子(monad)、二元还是三元时,将像 Integer... 这样的变量参数算作单个参数。原因是它实际上相当于传递一个List。 (它实际上是作为数组传递的,所以我不确定作者为什么要谈论 List)。

如果作者推荐的函数不超过 3 个参数,那么作者的意思是 foo(Integer, String, Object...) 没问题,而 foo(Integer, String ,长,对象...) 不是。

关于java - 在 "Clean Code,"中,可变数量的参数如何影响函数是单子(monad)、二元还是三元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33846215/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com