我正在处理递归,我想知道是否还有另一个函数内部引用变量(即函数的结果)。以下是相关代码的一部分。
# 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;
}
答案 0 :(得分:0)
可以预先定义变量,然后在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