引用在函数中传递的值
Referencing values passed in a function
我正在处理递归,我想知道是否可以在另一个函数中引用变量(即函数的结果)。这是有问题的代码部分。
# 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;
}
可以预先定义变量,然后在 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
我正在处理递归,我想知道是否可以在另一个函数中引用变量(即函数的结果)。这是有问题的代码部分。
# 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;
}
可以预先定义变量,然后在 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