假设我想调用一个内置函数(意味着我不能更改它(:
foo(int x, int y)
我希望x和y的参数是随机的,但是相同的随机数。我知道我可以用做到这一点
double rand = Math.random();
foo(rand, rand);
但是,有没有任何方法可以在一行中做到这一点,而不声明单独的变量?如
foo(Math.random(), Math.random());
但要让它们保持一致。只是好奇是否有一种我不知道的简单方法可以避免添加额外的行。也许我可以把一些东西输入到第二个参数中,基本上告诉它";使其与第一个参数";?非常感谢您的帮助。
是的,所以这可以通过创建另一个接受1个参数并调用原始方法的方法来轻松完成。这样可以确保在调用此方法时值始终相同。如果您不希望公开使用原始的foo(int,int(,请不要将其公开并隐藏为package private或private。
foo(int value) {
foo(value, value);
}
foo(Math.random());
定义lambda或方法
Function<Integer, Integer> fnc = v -> foo(v,v);
fnc.apply((int)(Math.random()*10));
或
public static int foo(int x) {
return foo(x, x);
}
public int static foo(int x, int y) {
return x + y;
}
否。random()
方法每次被调用时都会生成一个介于0.0和1.0之间的新数字。即使是诸如使用Random
和ThreadLocalRandom
类之类的替代方案,其行为方式也与它们各自的方法相同。
你有两个选择:
- 您可以存储调用
Math.random()
的结果,并通过x
和y
传递该值,正如您在文章中提到的那样 - 函数中只能有一个参数:
现在您可以直接传递所需的值。但是,如果您想要一个具有两个参数的函数,可以这样调用该方法:foo(int x)
foo(int x) { foo(x, x); }