美文网首页
2.6 布尔求值

2.6 布尔求值

作者: 冯可乐同学 | 来源:发表于2022-06-24 14:15 被阅读0次
  1. Groovy 中的布尔求值与 Java 中不同。在 Java 中,if 语句的条件部分必须是一个布尔表达式,比如 if(obj == null)if(a > 0)等这样的形式。Groovy 中没有这么挑剔。它会尝试推断,所以需要知道它的推断原理。

  2. 如果在需要布尔值的地方放了一个对象引用,Groovy 会检查该引用是否为 null。它将 null 视作 false。 如果对应引用不为 null,表达式的结果还与对象的类型有关。比如,如果对象是一个集合,那么 Groovy 会检查该集合是否为空。只有当集合不空时才是 true。

  3. Groovy 中类型与布尔值推断逻辑

  类型                 为真的条件
Boolean                 值为true
Collection              集合不为空
Character               值不为0
CharSequence            长度大于0
Enumeration             Has More Elements() 为 true
Iterator                hasNext() 为 true
Number                  Double 值不为0
Map                     该映射不为空
Matcher                 至少有一个匹配
Object[]                长度大于0
其他类型                引用不为 null
  1. 除了使用 Groovy 内置的布尔求值约定,在自己的类中,还可以通过实现 asBoolean() 方法来编写自己的布尔转换。

相关文章

  • 2.6 布尔求值

    Groovy 中的布尔求值与 Java 中不同。在 Java 中,if 语句的条件部分必须是一个布尔表达式,比如 ...

  • Groovy 布尔求值

      Groovy中的布尔求值与Java不同。根据上下文,Groovy会自动把表达式计算为布尔值。  如果在需要布尔...

  • v-bind和v-model

    布尔值的属性也有效 —— 如果条件被求值为 false 的话该属性会被移除: Button 这种为动态绑定指令,设...

  • JS语句

    条件语句 if 条件语句 其中condition(条件)可以是任意表达式,求值结果不一定是布尔值,ECMAScri...

  • Swift Collection 中的 lazy 作用

    惰性求值 惰性求值常见于函数式编程中,也有人把惰性求值翻译成延迟求值(Lazy Evaluation)。它的目的是...

  • Python中的优化:惰性求值详解

    惰性求值,也就是延迟求值,表达式不会在它被绑定到变量之后就立即求值,而是等用到时再求值。这个特性可以解决一些巨大甚...

  • 4.2 Variations on a Scheme: Lazy

    在元循环求值器的基础上,我们能够实现变体形式 惰性求值(lazy evaluation) 器。惰性求值器能够将程式...

  • 5.4-The Explicit-Control Evaluat

    将元循环求值器转换为寄存器机器语言,这样的求值器就是 显示控制求值器(explicit-control evalu...

  • 4.1 The Metacircular Evaluator-笔

    求值器也就是编程语言的解释器,如果求值器是由它要运算的语言缩写就称为 元循环求值器(metacircular ev...

  • JavaScript 短路求值(short-circuit ev

    短路求值 是使用 三元运算、&& 和 || 快速求值的方法。使用短路求值,在一行代码内表达出简单的条件赋值 (if...

网友评论

      本文标题:2.6 布尔求值

      本文链接:https://www.haomeiwen.com/subject/axgcvrtx.html