为什么我们可以设置列表而不是空手道功能的常量?

问题描述 投票:1回答:1

从空手道功能设置常量时我们需要karate.get(): Why operator '+' inside functions does not modify * def made variables?

为什么在附加到列表时我们不需要这个? 这个例子:

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]
karate
1个回答
0
投票

keys为例。声明函数时,keys可用,实际上是幕后的Java List。该函数可以继续调用add()方法而没有任何问题。对keys的引用是固定的,不会改变。

但是当你尝试用原始类型做同样的事情时 - 例如字符串或数字 - 您无法在JS引擎中更改对Karate变量的引用。您必须要求空手道设置(或获取)最新值。

© www.soinside.com 2019 - 2024. All rights reserved.