Как назначить переменные из массива в одну строку - PullRequest
0 голосов
/ 10 июня 2018

Есть ли элегантный способ сделать следующее: пусть int [] makeArray () будет методом, который возвращает массив целых чисел длиной 2.Тогда

int[] t = makeArray(); int ta = t[0]; tb = t[1];

Хорошее будет

int[] {ta,tb} = makeArray();

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Нет, если makeArray() не возвращает один и тот же массив после каждого вызова (что я предполагаю, что это не из-за его имени).Однако в этом случае вы можете написать:

int ta = makeArray()[0];
int tb = makeArray()[1];

В противном случае значение, возвращаемое из makeArray(), необходимо будет кэшировать, чтобы его можно было использовать для задания переменных, следующих за ним.

0 голосов
/ 10 июня 2018

То, что вы описываете, возвращает несколько значений, что было бы неплохо, но не поддерживается в Java, вы должны заключить их в объект .

Однако, в зависимости от вашегоВ случае использования вы можете преобразовать в нечто элегантное, используя лямбды, например, в следующем, где я переставил так, что makeArray становится withDataArray, и вы передаете ему лямбду для обработки данных массива.Вы могли бы также легко вернуть его.Измените BiConsumer на BiFunction и пусть withDataArray вернет результат BiFunction

public static void main(String[] args){

    withDataArray( (a,b) -> {
        System.out.println(a+b);
    });

}

public static void withDataArray(BiConsumer<Integer, Integer> applier){
    applier.accept(1,2);
}
...