【问题标题】:How to assign variables from an array in one line如何在一行中从数组中分配变量
【发布时间】:2018-11-19 22:43:38
【问题描述】:

是否有一种优雅的方式来执行以下操作:让 int[] makeArray() 成为一个方法 返回一个长度为 2 的整数数组。那么

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

会更好

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

【问题讨论】:

  • 您是在尝试根据tatb 的值创建一个数组,还是尝试将数组中的值解析为tatb?跨度>

标签: java arrays variable-assignment


【解决方案1】:

除非makeArray() 在每次调用后返回相同的数组(我假设它不是由于它的名称),否则不会。但是,如果是这种情况,您可以这样写:

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

否则,从makeArray() 返回的值需要被缓存,以便用于设置其后面的变量。

【讨论】:

    【解决方案2】:

    您所描述的是返回多个值,这很好但是isn't supported in java, you have to wrap them in an object

    但是,根据您的用例,您可以使用 lambdas 重构为优雅的东西,例如下面我重新排列了makeArray 变为withDataArray,然后你将它传递给一个 lambda 来处理数组数据。你也可以很容易地让它有回报。将 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 2017-04-25
      相关资源
      最近更新 更多