以下让我感到惊讶! 以下语句中的谓词将被删除
String selector = 'ul'
Map predicates = [class: 'catalog']
navigator.find predicates, selector
我发现以下有关此行为的评论:
/**
* Optimizes the selector if the predicates contains `class` or `id` keys that map to strings. Note this method has
* a side-effect in that it _removes_ those keys from the predicates map.
*/
我的问题。改变作为参数的数据中的某些东西是否真的是良好礼仪的规则?
我记得来自C ++的这种情况但是在java世界中,完整性的优先级高于以功能调用者为代价优化代码!
我在程序中遇到了这种行为,花了很多时间弄清楚为什么我的定义结构在执行过程中会发生变化。内存泄漏的想法已经到来。
答案 0 :(得分:1)
这确实是一种不好的做法,不应该这样做。我从未想过有人可能会重复使用传递给Navigator.find()
的谓词映射,但您的用例完全有效。
请在Geb's issue tracker中为此创建一张票。