是否可以从迭代器块返回列表
本文关键字:返回 列表 迭代器 是否 | 更新日期: 2023-09-27 18:25:20
我有这个函数:
class Path : List<LineSegment> { }
private IEnumerable<LineSegment> GetLineSegments(CollisionType collisionType, Path path)
{
if (collisionType == CollisionType.End)
{
yield return path.First();
yield return path.Last();
}
else if (collisionType == CollisionType.Segment)
{
foreach (LineSegment lineSegment in path)
{
yield return lineSegment;
}
}
}
基本上,我通过两种方式来检查(球和线之间的)碰撞。在一种情况下,我只想检查绘制路径的端点,但在另一种情况中,我想返回整个路径中的每个线段。
在给定的列表中循环以返回整个列表似乎有点奇怪。我可以把单子还回去吗?我想做这样的事情,但我遇到了错误:
private IEnumerable<LineSegment> GetLineSegments(CollisionType collisionType, Path path)
{
if (collisionType == CollisionType.End)
{
yield return path.First();
yield return path.Last();
}
else if (collisionType == CollisionType.Segment)
{
return path.AsEnumerable<LineSegment>();
}
}
您别无选择,只能使用foreach
循环。这是一个经常被要求的功能,但语言中没有。