【问题标题】:How to get rid of double call to Iterator::check()?如何摆脱对 Iterator::check() 的双重调用?
【发布时间】:2015-02-05 12:11:59
【问题描述】:

PHP Iterator::key 页面说:

Return Values:

Returns scalar on success, or NULL on failure.

但是为了能够在迭代器逻辑中从Iterator::key 中判断当前迭代器节点是否有效(以便能够返回null 或其他内容),必须调用Iterator::check() .因此,在我看来,大多数人会从 Iterator::next() 中调用 Iterator::check() 似乎很自然,这样如果当前迭代器位置无效,它就可以将 'Iterator::key()' 的返回值设置为 null。

但这会导致Iterator::check() 在运行foreach 循环时被调用两次。我怎样才能摆脱这种冗余?

【问题讨论】:

    标签: php iterator duplication


    【解决方案1】:

    为了解决这个问题,引入一个$currentNodeChecked布尔变量就足够了,可以在调用Iterator::check()之前检查它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-04
      • 2020-09-09
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多