如果我有一个类:
class Node
{
string id;
const Node next;
}
如何查找链接列表中最后id
的{{1}}?
Node
答案 0 :(得分:3)
我认为你的问题是你需要循环但不能重置你的变量,因为它是const?如果你想拥有一个引用const对象但可以自行重新赋值的对象(即它是tail-const),那么使用std.typecons.Rebindable
。在这种情况下,这会给你:
string lastID(const Node node)
{
import std.typecons;
Rebindable!(const Node) curr = node;
while(curr.next)
curr = curr.next;
return curr.id;
}
我必须说我发现它有点奇怪,虽然你不只是询问如何引用一个const对象,其中引用不是const本身,因为我只能看到你是考虑到循环本身是多么简单,我真的在这里问。就目前而言,你的问题有点太多,要求别人为你编写代码,而不是问一个问题。
答案 1 :(得分:2)
你也可以去看看并使用递归:
string lastID(const Node node)
{
if(node.next)
return lastID(node.next);
return node.id;
}
请注意,如果列表很长,它可能会导致堆栈溢出(据我所知,D不支持尾调用递归优化)