Julia - 短路求值
&& 和 || 的布尔运算符被称为短路求值
它们连接一系列布尔表达式,仅计算最少的表达式来确定整个链的布尔值
在表达式 a && b 中,只有 a 为 true 时才计算子表达式 b
julia> f(x) = (println(x); true)
f (generic function with 1 method) julia> g(x) = (println(x); false)
g (generic function with 1 method) julia> f(1) && f(2)
1
2
true julia> f(1) && g(2)
1
2
false julia> g(1) && f(2)
1
false julia> g(1) && g(2)
1
false
在表达式 a || b 中,只有 a 为 false 时才计算子表达式 b
julia> f(x) = (println(x); true)
f (generic function with 1 method) julia> g(x) = (println(x); false)
g (generic function with 1 method) julia> f(1) || f(2)
1
true julia> f(1) || g(2)
1
true julia> g(1) || f(2)
1
2
true julia> g(1) || g(2)
1
2
false
&& 比 || 优先级高
julia> false || true && false
false
&& 和 || 可以用 if 语句来表示
&&
expression && statement # 可以写成 if 语句 if expression
statement
end
expression 从而 statement
||
expression || statement # 可以写成 if 语句 if !expression
statement
end
expression 要不就 statement
&& 和 || 的运算对象也必须是布尔值,即为 true 或 false,不能用 1 和 0 来代替
julia> 1 && true
ERROR: TypeError: non-boolean (Int64) used in boolean context
Stacktrace:
[1] top-level scope at none:0 julia> 0 && true
ERROR: TypeError: non-boolean (Int64) used in boolean context
Stacktrace:
[1] top-level scope at none:0 julia> 1 || true
ERROR: TypeError: non-boolean (Int64) used in boolean context
Stacktrace:
[1] top-level scope at none:0 julia> 0 || true
ERROR: TypeError: non-boolean (Int64) used in boolean context
Stacktrace:
[1] top-level scope at none:0
短路求值的最后一项可以是任何类型的表达式,它可以被求值并返回
julia> true && (x = 2)
2 julia> false && (x = 2)
false julia> true || (x = 2)
true julia> false || (x = 2)
2
非短路求值运算符,可以使用位布尔运算符 & 和 |
& 为与运算,与运算中,两个真才为真,即 a && b,a 和 b 都为真,结果才为真
| 为或运算,或运算中,有一个为真就为真,即 a || b,a 或 b 为真,结果为真;a 和 b 全为真,结果也为真
julia> true & true
true julia> true & false
false julia> false & true
false julia> false & false
false julia> true | true
true julia> true | false
true julia> false | true
true julia> false | false
false
Julia - 短路求值的更多相关文章
- 一个短路求值引起的一个小bug
今天在写一个判断字符串是否回文时因为短路求值问题导致了一个bug,记录如下: 代码如下 bool isPal(char str[],int len) { int begin=0; int end=le ...
- 一道PHP题引出的“短路求值”
今天群里有个人问了一个问题,代码如下: $a = 3; $b = 2; if ($a = 2 || $b = 5) { ++$a; } echo $a; 说代码段的执行的结果为1,问大家$a的 ...
- C 语言 - 逻辑运算和短路求值
逻辑运算符: 运算符 含义 优先级 ! 逻辑非 高 && 逻辑与 中 || 逻辑或 低 举例: !a:如果 a 为真,!a 为假:如果 a 为 假,!a 为真 a && ...
- php实现用短路求值原理求1+2+3+...+n(短路求值是什么)(仔细分析题干)
php实现用短路求值原理求1+2+3+...+n(短路求值是什么)(仔细分析题干) 一.总结 1.仔细分析题干,找出要点:该递归还是得递归啊 2.短路求值原理:&&就是逻辑与,逻辑与有 ...
- js 实用技巧 短路求值
&&运算符 如果操作有false 则返回false 例如 0&&1 // 返回0 true&&false //返回false 0&&a ...
- “短路求值(Short-Circuit Evaluation)
// 逻辑与和逻辑或操作符总是先计算其做操作数,只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解其右操作数. function aa() { if (null) { console ...
- C语言对表达式的求值顺序不是明确规定的
讨论区看到的 WA来自那些递归下降求解的代码. 第一种情况,使用|| 和 &&: 例如s为所给串 int getval() { switch(s[c_s++]) { case 'p': ...
- 【部分原创】标准C语言的优先级、结合性、求值顺序、未定义行为和非确定行为浅析
零. 优先级 在C++ Primer一书中,对于运算符的优先级是这样描述的: Precedence specifies how the operands are grouped. It ...
- Aviator 表达式求值引擎开源框架
简介¶ Aviator是一个高性能.轻量级的java语言实现的表达式求值引擎,主要用于各种表达式的动态求值.现在已经有很多开源可用的java表达式求值引擎,为什么还需要Avaitor呢? Aviato ...
随机推荐
- swift 数组作为函数参数的书写格式
数组定义 --[来自百度知道] Swift语言使用类型名紧接中括号[]来简化标准库中定义的命名型类型Array.例如 Array<String> = ["Alex", ...
- 【剑指offer】找出数组中任意一个重复的数字,C++实现
原创博文,转载请注明出处! # 题目 # 思路 对于长度为n的数组,范围为0~n-1的数字而言,如果不粗在重复数字,则排序后数组元素和数组角标相同.如果存在重复数字,则在排序的过程中会出现不同下标对应 ...
- kubeadm搭建kubernetes集群之二:创建master节点
在上一章kubeadm搭建kubernetes集群之一:构建标准化镜像中我们用VMware安装了一个CentOS7虚拟机,并且打算用这个虚拟机的镜像文件作为后续整个kubernetes的标准化镜像,现 ...
- [转]Java 8新特性探究(lambda)
原文地址:http://my.oschina.net/benhaile/blog/175012 目录[-] 函数式接口 Lambda语法 方法引用 总结 函数式接口 函数式接口(functional ...
- 20179223《Linux内核原理与分析》第十二周学习笔记
Return-to-libc 攻击实验 一.实验描述 缓冲区溢出的常用攻击方法是用 shellcode 的地址来覆盖漏洞程序的返回地址,使得漏洞程序去执行存放在栈中 shellcode.为了阻止这种类 ...
- 船长带你看书——《selenium2 python 自动化测试实战》(1)
有很多selenium的教程,你没有从头看,当你看的时候已经很难跟上作者的节奏了.现在,你有机会再从头学一次了.从今天开始,船长会从最基本的知识开始,和大家一起学selenium.能不能跟着一起就看大 ...
- 【DUBBO】dobbo的application的配置项
Dubbo:application的配置项[一]:配置项 <dubbo:application name="服务名字" owner="拥有者" organ ...
- Request对象主要用于获取来自客户端的数据,如用户填入表单的数据、保存在客户端的Cookie等。
1.主要属性 ApplicationPath 获取服务器上asp.net应用程序的虚拟应用程序根路径 Browser 获取有关正在请求的客户端的浏览器功能的信息,该属性值为:HttpBrows ...
- Unite 2018 | 《崩坏3》:在Unity中实现高品质的卡通渲染(下)
http://forum.china.unity3d.com/thread-32273-1-1.html 今天我们继续分享米哈游技术总监贺甲在Unite Beijing 2018大会上的演讲<在 ...
- quick code ide设置分辨率
默认是640*960的分辨率,但是我的设计分辨率是480*800 所以得改改 在config.lua里的改成 -- design resolutionCONFIG_SCREEN_WIDTH = 480 ...