专栏首页DevOps持续交付Groovy语法系列教程之布尔(五)

Groovy语法系列教程之布尔(五)

Groovy语法概述

本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。

6. 布尔

布尔是一种特殊的数据类型,用于表示真值:truefalse。使用此数据类型作为跟踪真/假条件的简单标志。

布尔值可以存储在变量中,就像其他任何数据类型一样:

def myBooleanVariable = true
boolean untypedBooleanVar = false
booleanField = true

truefalse是仅有的两个原始布尔值。但是,可以使用逻辑运算符来表示更复杂的布尔表达式。

另外,Groovy具有特殊的规则(通常称为Groovy Truth),用于将非布尔对象强制为布尔类型。

6.1 Groovy Truth

Groovy通过应用下面给出的规则来确定表达式是真还是假。

6.1.1 布尔表达式

如果布尔值为true,则为真。

assert true
assert !false

6.1.2 集合和数组

非空的集合和数组为真。

assert [1, 2, 3]
assert ![]

6.1.3 匹配器

如果匹配器(Matcher)至少有一个匹配,则为真。

assert ('a' =~ /a/)
assert !('a' =~ /b/)

6.1.4 迭代器和枚举

包含元素的迭代器和枚举被强制转换为真。

assert [0].iterator()
assert ![].iterator()
Vector v = [0] as Vector
Enumeration enumeration = v.elements()
assert enumeration
enumeration.nextElement()
assert !enumeration

6.1.5 映射

非空映射被转换为真。

assert ['one' : 1]
assert ![:]

6.1.6 字符串

非空的字符串、GStringCharSequences为真。

assert 'a'
assert !''
def nonEmpty = 'a'
assert "$nonEmpty"
def empty = ''
assert !"$empty"

6.1.7 数字

非0数字为真。

assert 1
assert 3.5
assert !0

6.1.8 对象引用

非空对象引用为真。

assert new Object()
assert !null

6.1.9 使用asBoolean()方法自定义真值

为了自定义groovy是将对象转换为true还是false,可实现asBoolean()方法:

class Color {
    String name

    boolean asBoolean(){
        name == 'green' ? true : false
    }
}

Groovy将调用此方法将对象强制转换为布尔值,例如:

assert new Color(name: 'green')
assert !new Color(name: 'red')

查看本系列教程其他文章:

Groovy语法系列教程之注释(一)

Groovy语法系列教程之关键字和标识符(二)

Groovy语法系列教程之字符串(三)

Groovy语法系列教程之数字(四)

本文分享自微信公众号 - 左手编程右手文化(shanyshanb),作者:左手编程右手文化

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何转换png图片为jpg图片

    最近在工作中会遇到需要将 png 图片转换为 jpg 图片的需求,主要原因也是 png 图片占的空间太大,如果图片数量上万张,可能就需要十几G的存储空间,所以希...

    材ccc
  • WordPress实现QQ卡片链接

    QQ发出去一个网址后,在展示的时候,他会快速抓取网站的内容(标题,缩略图,描述)进行展示,抓取有特殊标记的内容,快速展示出来。我们可以通过在head部分加标签的...

    神无月
  • 概率论之概念解析:极大似然估计

    【导读】本文是数据科学家Jonny Brooks-Bartlett概率论基础概念系列博客中的“极大似然估计”一章,主要讲解了极大似然估计的若干概念。分别介绍了参...

    WZEARW
  • 2019年末逆向复习系列之拼夕夕Web端anti_content参数逆向分析

    这篇文章是公众号《云爬虫技术研究笔记》的《2019年末逆向复习系列》的第八篇:《拼夕夕Web端anti_content参数逆向分析》

    云爬虫技术研究笔记
  • Clipboard还能玩出花

    用户1907613
  • iOS开发中简单的图片浏览器

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

    用户1451823
  • JVM Param

    -Xss 等价于 -XX:ThreadStackSize= 线程栈的大小,默认1M

    itliusir

扫码关注云+社区

领取腾讯云代金券