我一直在使用Unity C#。我真的不了解IEnumerators,但假设我有以下内容:
IEnumerator some_function(int a) { ... }
IEnumerator f = some_function(0);
有没有办法更改现有f
的参数值,以便它等同于声明,例如:
IEnumerator f = some_function(5);
答案 0 :(得分:4)
简短的回答是否。
你可以再次调用你的方法。或者,您可以将行为打包在新的类或方法中。但IEnumerable<>
或使用过的枚举器与生成器没有任何关联,允许这样做。
答案 1 :(得分:2)
如果您还没有开始列举您的功能结果,那么只需再次调用您的功能就没有问题:
IEnumerable f = some_function(0);
f = some_function(5);
如果已经开始枚举函数的结果,并且您希望现有的调用继续使用新值,那么请考虑一个帮助程序类:
class SomeFunctionData {
public int a;
}
IEnumerable some_function(SomeFunctionData data);
然后
var data = new SomeFunctionData { a = 0 };
IEnumerable f = some_function(data);
...
data.a = 5;
如果some_function
继续查看现有的SomeFunctionData
实例,那么它将会看到a
的新值。请注意,在大多数情况下,这会导致难以理解的程序逻辑,因此在实现之前请检查您是否真的需要它,但在某些情况下它会很有用。