为什么我们可以从空手道函数中设置列表而不是常数



我们需要karate.get((从空手道函数设置常数时:
为什么运算符' '内部功能不会修改 * def made变量?

当附加列表时,为什么我们不需要这个?
示例:

Scenario: karate forEach operation on maps
    * def keys = []
    * def vals = []
    * def idxs = []
    * def fun = function(x, y, i){ keys.add(x); vals.add(y); idxs.add(i) }
    * def map = { a: 2, b: 4, c: 6 }
    * eval karate.forEach(map, fun)
    * match keys == ['a', 'b', 'c']
    * match vals == [2, 4, 6]
    * match idxs == [0, 1, 2]

keys的示例为例。声明该功能时,keys可用,实际上是幕后Java List。该函数可以毫无问题地调用add()方法。对keys的引用是固定的,并且不更改。

但是,当您尝试使用原始类型做同样的事情时 - 例如字符串或数字 - 您无法将参考从JS引擎内部更改为空手道变量。您必须要求空手道设置(或获取(最新值。

最新更新