如果我有这样的课程:
class Node
{
string id;
const Node next;
}
我如何找到链接列表id
中最后一个的?Node
string lastID(const Node node)
{
???
}
如果我有这样的课程:
class Node
{
string id;
const Node next;
}
我如何找到链接列表id
中最后一个的?Node
string lastID(const Node node)
{
???
}
我假设你的问题是你需要循环但不能重置你的变量,因为它是 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 对象,因为这就是我所能看到的,你真的在这里问,考虑到循环本身是多么简单。就目前而言,您的问题有点过于要求某人为您编写代码而不是提出问题。
您也可以花哨并使用递归:
string lastID(const Node node)
{
if(node.next)
return lastID(node.next);
return node.id;
}
请记住,如果列表很长,它可能会导致堆栈溢出(据我所知 D 不支持尾调用递归优化)