加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

按键获取Groovy映射值

发布时间:2020-12-14 16:24:14 所属栏目:大数据 来源:网络整理
导读:我是一个完整的groovy菜鸟,我有这个简单的地图: def BranchToPort = [ [branch: 'master',port: 15565],[branch: 'Release',port: 15566],[branch: 'Feature',port: 15567],[branch: 'Prototype',port: 15568],[branch: 'HotFix',port: 15569]] 并给出一个
我是一个完整的groovy菜鸟,我有这个简单的地图:

def BranchToPort = [
    [branch: 'master',port: 15565],[branch: 'Release',port: 15566],[branch: 'Feature',port: 15567],[branch: 'Prototype',port: 15568],[branch: 'HotFix',port: 15569]
]

并给出一个分支名称(密钥)我想获得端口号,最好是在一行代码中.奇怪的是,互联网上有大量的例子可以根据相应的价值获得密钥,但不是相反.

解决方法

假设分支名称是唯一的,您可以编写一个简单的方法来返回给定分支名称的端口

def port(String branchName) {
    BranchToPort.find { it['branch'] ==  branchName }?.get("port")
}

只是为了解释这里发生的事情你提到“我是一个完整的常规菜鸟”

> def port(String branchName)这里我们声明一个采用字符串值branchName的方法
> BranchToPort.find因为BranchToPort是一个groovy集合,我们可以使用.find,它采用一个闭包,用花括号表示.此闭包将在集合中的每个项目上执行,而find的功能是它将返回第一个匹配项目.
> it [‘branch’] == branchName这是我们关闭内部的“让我得到匹配此条件的第一项”.使用它引用集合中的项.这里我们访问“branch”键并检查值是否与输入branchName匹配.
>} [‘port’]最后访问密钥以仅提取值.
>?.get(“port”)经Royg评论后编辑.我们使用安全的空检查器?并尝试访问“端口”值.的?将阻止空指针异常.

最后一点,在Groovy方法中将返回最后执行的语句,因此不需要使用return或将方法中的语句赋值给变量.

希望这可以帮助.

[编辑]
忘了举一个调用方法的例子:

portNumber = port("master")
assert portNumber == 15565
> True

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读