Methods Groovy中的Bang方法
Groovy是否有类似于Ruby上的bang方法 发件人: 在Ruby中,您可以编写名称以结尾的方法!感叹号或“砰”。关于何时以及为什么要这样做的问题,有很多困惑 这个!在以结尾的方法名称中!表示“此方法很危险”-或者更准确地说,此方法是其他等效方法的“危险”版本,具有相同的名称减去!。“危险”是相对的;这个没有任何意义,除非它所在的方法名对应于一个类似但没有太大影响的方法名* 以及: 你会发现很多方法对,一个有爆炸,一个没有。那些没有使用bang的用户执行一个操作并返回一个新创建的对象,反映操作的结果,将字符串大写,对数组排序,等等。相同方法的bang版本执行此操作,但它们在适当的位置执行此操作:它们不创建新对象,而是变换原始对象Methods Groovy中的Bang方法,methods,groovy,Methods,Groovy,Groovy是否有类似于Ruby上的bang方法 发件人: 在Ruby中,您可以编写名称以结尾的方法!感叹号或“砰”。关于何时以及为什么要这样做的问题,有很多困惑 这个!在以结尾的方法名称中!表示“此方法很危险”-或者更准确地说,此方法是其他等效方法的“危险”版本,具有相同的名称减去!。“危险”是相对的;这个没有任何意义,除非它所在的方法名对应于一个类似但没有太大影响的方法名* 以及: 你会发现很多方法对,一个有爆炸,一个没有。那些没有使用bang的用户执行一个操作并返回一个新创建的对象,反映操
不,groovy目前从v2.1.4开始没有类似的内容不,groovy目前从v2.1.4开始没有类似的内容这在groovy中不像在Ruby中那样是一种约定。但是,您可以使用包含以下字符的名称编写方法!限制条件是必须始终像字符串一样引用:
// define method with quoted name
def 'dangerous!'() {
// do something dangerous
}
// invoke method with quoted name
'dangerous!'()
这在Groovy中不像在Ruby中那样是一种约定。但是,您可以使用包含以下字符的名称编写方法!限制条件是必须始终像字符串一样引用:
// define method with quoted name
def 'dangerous!'() {
// do something dangerous
}
// invoke method with quoted name
'dangerous!'()
要添加到您的选项中,另一个更像Groovy或Java的解决方案是包含一个可选参数,该参数支持就地进行危险的修改,如下所示:
def processFoo(Foo item, mutate = false) {
if(!mutate) {
Foo temp = new Foo()
// copy item properties
item = temp
}
item.bar = 'blah blah'
// process item here
return item
}
processFoo(myFoo) // makes a copy
processFoo(myFoo, true) // modifies original
此模式与集合上的方法一起使用(尽管方式相反)。在列表上调用sortfalse可防止更改原始数组。调用sort或sorttrue将直接对其进行修改。要添加到选项中,另一个更像Groovy或Java的解决方案将包括一个可选参数,该参数允许进行危险的修改,如:
def processFoo(Foo item, mutate = false) {
if(!mutate) {
Foo temp = new Foo()
// copy item properties
item = temp
}
item.bar = 'blah blah'
// process item here
return item
}
processFoo(myFoo) // makes a copy
processFoo(myFoo, true) // modifies original
此模式与集合上的方法一起使用(尽管方式相反)。在列表上调用sortfalse可防止更改原始数组。调用sort或sorttrue将直接修改它。我确实尝试过,但调用时我没有使用字符串,所以我没有回答。谢谢你这么做我确实试过了,但打电话时我并没有使用字符串,所以我并没有回答。谢谢你这么做