下面的Json包含三件我不知道如何在基于lambda的DSL中为Pact建模的东西(而且我无法通过阅读https://github.com/DiUS/pact-jvm/tree/master/pact-jvm-consumer-java8上提供的示例来弄清楚)。
Json对象由3个属性组成; “Inventory”包含一个数组(只有一个元素长)和两个简单的键值对。
1)如何使用基于lambda的DSL声明命名数组?
Inventory-array中的第一个(也是唯一一个)对象包含两个命名对象“Car”和“Camera”。
2)如何使用基于lambda的DSL声明命名对象?
在“Camera”对象中有一个名为“Conditions”的数组,它包含两个字符串值。
3)如何使用基于lambda的DSL在命名数组中声明两个示例字符串值?
{
"Inventory":[
{
"Car":{
"gearbox":"automatic",
"ProductId":30212
},
"Camera":{
"EndPrice":1235,
"Conditions":[
"FaultyButtons",
"FaultyCasing"
],
"ModelId":"650"
}
}
],
"IsSuccess":true,
"Info":"Ok"
}
答案 0 :(得分:1)
我没有机会使用新的Lambda DSL,因为我经常使用Node,但我会给它一个解决方案:
....
vm.authentication = Authentication;
vm.build = build;
vm.error = null;
vm.form = {};
vm.remove = remove;
vm.save = save;
$scope.classList = [{
'classid': 1,
'name': 'Marauder',
'ascendancies': [{
'ascendancyid': 1,
'name': 'Berserker'
}, {
'ascendancyid': 2,
'name': 'Chieftain'
}, {
'ascendancyid': 3,
'name': 'Juggernaut'
}]
}, {
'classid': 2,
'name': 'Ranger',
'ascendancies':[{
'ascendancyid': 1,
'name': 'Deadeye'
}, {
'ascendancyid': 2,
'name': 'Raider'
}, {
'ascendancyid': 3,
'name': 'Pathfinder'
}],
}, {
'classid': 3,
'name': 'Shadow',
'ascendancies':[{
'ascendancyid': 1,
'name': 'Assassin'
}, {
'ascendancyid': 2,
'name': 'Saboteur'
}, {
'ascendancyid': 3,
'name': 'Trickster'
}]
}, {
'classid': 4,
'name': 'Witch',
'ascendancies':[{
'ascendancyid': 1,
'name': 'Necromancer'
}, {
'ascendancyid': 2,
'name': 'Elementalist'
}, {
'ascendancyid': 3,
'name': 'Occultist'
}]
}, {
'classid': 5,
'name': 'Templar',
'ascendancies':[{
'ascendancyid': 1,
'name': 'Inquisitor'
}, {
'ascendancyid': 2,
'name': 'Hierophant'
}, {
'ascendancyid': 3,
'name': 'Guardian'
}]
}, {
'classid': 6,
'name': 'Duelist',
'ascendancies': [{
'ascendancyid': 1,
'name': 'Slayer'
}, {
'ascendancyid': 2,
'name': 'Gladiator'
}, {
'ascendancyid': 3,
'name': 'Champion'
}]
}, {
'classid': 7,
'name': 'Scion',
'ascendancies':[{
'ascendancyid': 1,
'name': 'Ascendant'
}]
}];
$scope.getAscendancies = function () {
if ($scope.classSelected.classid > '0')
$scope.showAscendancy = true;
}
....
我不确定这是否100%正常工作,因为我实际上并没有使用IDE来验证它,但我认为这会让你对我的内容有所了解。试图完成。
正如您所看到的,您可以将多个函数相互链接,因为它一直引用起始对象,使得逐个添加许多值变得简单,或者如果您更喜欢更易读的结构,则可以创建换行符每个引用范围变量的函数;它真的取决于你。 Lambda DSL尝试利用范围来创建更复杂的对象,其方式几乎与JSON最终出现的方式相同。
我知道目前的文档略显缺乏如何使用这种强大的新方法来进行DSL,但you might want to take a gander at the code that powers it for further reference因为它易于阅读并帮助您破译您所追求的内容。< / p>