【问题标题】:Referencing values passed in a function引用函数中传递的值
【发布时间】:2015-10-26 03:45:17
【问题描述】:

我正在处理递归,我想知道是否有引用另一个函数内部的变量(即函数的结果)。这是有问题的代码部分。

# functional way
ListNode x = maxNode(list.next);
if(list.info.compareTo(x.info) < 0) {
    return x;
}

# ideal way
if(list.info.compareTo(ListNode y = maxNode(list.next)) < 0) {
    return y;
}

【问题讨论】:

标签: java function syntax


【解决方案1】:

可以事先定义变量,然后在 if 语句中设置

ListNode y;
if(list.info.compareTo((y = maxNode(list.next)).info) < 0)
    return y;

但是事先设置它更具可读性

ListNode y = maxNode(list.next);
if(list.info.compareTo(y.info))
    return y;

我只建议在循环检查语句中进行设置,因为在这种情况下它有助于提高可读性

ListNode y = list;
while((y = y.next) != null)
    //dostuff

这种形式的while循环也可以更容易地表示为for循环

for(ListNode y = list; y != null; y = y.next)
    //dostuff

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2018-04-28
    • 2016-12-20
    • 2016-03-24
    相关资源
    最近更新 更多