def test(String a,String b) { }
我想用动态参数映射来表示它。
我总是这样
test(['1','2']); //valID call
并且
test([a:'1',b:'2']); //=> does not work
将工作。但它没有。所以我记得the spread operator,但是不能让它上班….
有没有办法像以上一样的方法来调用一些地图作为参数而不是单个参数?
解决方法 也许我错过了一些东西,但是我现在不认为Groovy已经命名了参数。有 discussions和 proposals,但我没有任何官方的意见。对于你的情况,我认为地图传播可能有所帮助,但不是每一种情况。获取值后,它遵循映射值声明的顺序:
def test(String a,String b) { "a=$a,b=$b" }def test(Map m) { test m*.value }assert test(a: "aa",b:"bb") == "a=aa,b=bb"assert test(b: "aa",a:"bb") != "a=aa,b=bb" // should be false :-(assert test(b: "ccc",a:"ddd") == "a=ddd,b=ccc" // should have worked :-(
对于课程,我可以建议Groovy’s as operator吗?
@groovy.transform.CompileStaticclass Spread { class Person { String name BigDecimal height } def method(Person p) { "name: ${p.name},height: ${p.height}" } def method(Map m) { method m as Person } static main(String[] args) { assert new Spread().method(name: "John",height: 1.80) == "name: John,height: 1.80" }}总结
以上是内存溢出为你收集整理的groovy – 命名参数全部内容,希望文章能够帮你解决groovy – 命名参数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)