我需要使用groovy chain命令设计一个DSL(领域特定语言)。
我有以下员工数据库
Name Age Date-Of-Joining Salary
Test 24 12-aug-2015 6000$
我需要创建一个DSL,就像:-
将name更新为“test1”,age更新为“26”,依此类推。
问题是:-可以更新的字段是用户定义的,即他/她可以选择,哪些列将被更新及其动态。
所以:-将薪资更新为“7000美元”也可以。
是否可以创建这样的动态dsl?如果可以,请提供一些简要信息,以便进行此类设计
我已经开发了后端系统,将更新价值。
我不知道如何从这个动态dsl中获取值
在DSL中,您应该有一些关于应该更新哪些员工记录的信息(例如,在员工表中提供主键)。
在Groovy中,您希望DSL具有的活力是完全可能的。以这个小示例为起点(这个示例不使用数据库来保持简单):
class Employee
{
String name
int age
int salary
public String toString()
{
"name=${name}, age=${age}, salary=${salary}\$"
}
def update(String attributeName)
{
['to': { Object value ->
this[attributeName] = value
['and': { String nextAttrName ->
update(nextAttrName)
}]
}]
}
}
Employee emp = new Employee(name: 'Test', age: 24, salary: 6000)
println emp // name=Test, age=24, salary=6000$
emp.with
{
update 'name' to 'John'
println emp // name=John, age=24, salary=6000$
update 'salary' to 7000
println emp // name=John, age=24, salary=7000$
update 'name' to 'Michael' and 'age' to 48
println emp // name=Michael, age=48, salary=7000$
}
您的DSL将执行代码,因此您不会“提取”值,但DSL将调用您的后端方法。
有一个关于在Groovy中创建DSL的非常好的演示文稿:创建开发人员可以实际使用的Groovy DSL。这个演示文稿教授了很多关于DSL内部的知识。
问题内容: 我们过去能够通过以下方式检查参数是否可用: 要么 但这至少在Jenkins v 2.39以后不再有效。(这些函数适用于常规脚本中设置的变量,但不适用于“使用参数构建”中的参数。) 问题答案: 代替检查,您应该使用:
问题内容: 该代码无法编译,编译器说f含糊。但是我认为第二种方法可以解决什么问题? 问题答案: 这是因为无法确定该方法调用是应调用变量args还是应调用float和变量args。 Java决定以这种方式来调用拓宽>装箱>变量args的方法,但是在这种情况下,两者都具有变量args。 在这种情况下,基本上将char扩展为浮动。 Java基元的扩展顺序为:
5.7. 可变参数 参数数量可变的函数称为为可变参数函数。典型的例子就是fmt.Printf和类似函数。Printf首先接收一个的必备参数,之后接收任意个数的后续参数。 在声明可变参数函数时,需要在参数列表的最后一个参数类型之前加上省略符号“...”,这表示该函数会接收任意数量的该类型参数。 gopl.io/ch5/sum func sum(vals...int) int { total
在第二章中,我们已经讲叙了基本的函数定义与调用方法,以及一些函数属性的作用。但 正如大多数编程语言一样,函数是如此普遍且重要的元素。因而本章继续讨论一些有关函 数的较为高级的用法。 5.1 可变参数 可变参数的意义 一般情况下,在定义函数时指定形参,在调用函数时传入实参,且参数个数必须要与定义 时指定的参数数量相等。但在一些情况下,我们将要实现的函数功能,它的参数个数可能 是不确定,或者有些参数是
6. 可变参数 到目前为止我们只见过一个带有可变参数的函数printf: int printf(const char *format, ...); 以后还会见到更多这样的函数。现在我们实现一个简单的myprintf函数: 例 24.9. 用可变参数实现简单的printf函数 #include <stdio.h> #include <stdarg.h> void myprintf(const ch
问题内容: 我正在为我的应用程序创建搜索表单。 用户在其中选择应该用于过滤数据的字段。 数字字段是可变的,所以我不知道SQL查询的where子句中应该有多少个。 如何在where子句中使用可变数量的条件? 谢谢 问题答案: PrepardStatements不支持可变数量的条件。一些框架所做的是将每个PreparedStatement缓存在Map中,键是查询。 因此,每次您要运行查询时,都需要构建