ruby编程语言-学习笔记5(第5章 语句和控制结构)
以下是2种表达方式一样。
if expression
code
end
if expression then #推荐这种形式
code
end
expression的值不是false或nil,则code块将被执行。
需要注意:1)围绕expressions的圆括号是可选的(而且通常都不用),ruby使用换行符、分号或者关键字then对条件表达式和后续的内容进行分隔
2) 必须以end 作为结束。
例子
if data #if array exist
data << x #append x to data
else
data = [x] #create a new array, that holds the value
end #this is the end of the conditional
if expression_1 then
code1
elseif expression_2
code2
.....
elseif expression_N
code3
else
code
end
例子 (多种形式,最好使用同一种代码规范)个人认为then最好
if x==1
name = "one"
elseif x==2
name = "two"
elseif x==3 then name ="three"
elseif x==4; name = "four"
else
name = "many"
end
5.1.3 返回值
在大多数语言中if条件式是一个语句,但在ruby中一切都是表达式,包括那些被称为语句的控制结构。
if“语句”的返回值:为被执行代码中最后一个表达式的值,若没有任何执行代码则返回nil
name = if x==1 then "one"
elseif x==2 then "two"
elseif x==3 then "three"
elseif x==4; then "four"
else "many"
end
5.1.2 修饰符if
code if expression
puts message if message #if message not nil, or false, print it
if修饰符的优先级很低,比赋值操作符还低
y = x.invert if x.respond_to ? :invert #if修饰符作用与整个赋值表达式,如果x没有名为invert的方法,那么不会有任何事情发生。
y = (x.invert if x.respond_to ? :invert) #if修饰符仅仅作用与方法调用,如果if没有invert方法,那么该修饰符表达式的值将为nil,然后这个值被赋给y.
ruby编程语言-学习笔记5(第5章 语句和控制结构)的更多相关文章
- ruby编程语言-学习笔记4(第4章 表达式和操作符)
4.6.9 范围 Flip-Flops: ..和... ..和... 操作符不是基于方法的,无法重定义.(优先级比较低) x+1 .. x*x #可以认为是x+1 至 x*x 的范围 因为操作 ...
- ruby编程语言-学习笔记2(第4章 表达式和操作符)
对属性和数组元素的赋值 o.m + = 1 ===>o.m = (o.m()+ 1) # 对 o.m()这个方法的结果+1 对数组元素的赋值也是通过 方法调用来完成. 0.[] = 1 == ...
- ruby编程语言-学习笔记3(第4章 表达式和操作符)
4.6 操作符 了解优先级很重要 位移操作符 (0b1011)<< 1 # ==> "10110" 11 << 1 = 22 ...
- ruby编程语言-学习笔记1
安装完 ruby ri irb ruby-devel 1. 先来个简单的,写个helloworld 给新手们 (terminal中,# 代表root权限,$ 代表用户权限, 前面的就不写了.) # ...
- 【c++ Prime 学习笔记】第5章 语句
C++提供了一组控制流语句,包括条件执行语句.循环语句.跳转语句. 5.1 简单语句 空语句 ; ,最简单的语句 别漏写分号,也别多写 while(cin>>s && s! ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第四章:Direct 3D初始化
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第四章:Direct 3D初始化 学习目标 对Direct 3D编程在 ...
- 《深入Java虚拟机学习笔记》- 第19章 方法的调用与返回
<深入Java虚拟机学习笔记>- 第19章 方法的调用与返回
- 《深入Java虚拟机学习笔记》- 第16章 控制流
<深入Java虚拟机学习笔记>- 第16章 控制流
- 《深入Java虚拟机学习笔记》- 第17章 异常
<深入Java虚拟机学习笔记>- 第17章 异常
随机推荐
- android xml产生和解析
public static void writeToXml(Map<String, Object> map,Writer writer) throws Exception, Illegal ...
- Android NFC标签 开发深度解析 触碰的艺术
有几天没有更新博客了,不过本篇却准备了许久,希望能带给每一位开发者最简单高效的学习方式.废话到此为止,下面开始正文. NFC(Near Field Communication,近场通信)是一种数据传输 ...
- thinkphp验证码的实现
两种验证码验证实现,一种直接在form表单提交按钮实现验证,一种使用ajax传递参数实现验证: 1.直接在form表单提交按钮实现验证,在控制器VerifyController.class.php中写 ...
- mysql触发器的例子--插入前更新数据
本文介绍下,一个mysql触发器的例子,在数据插入前更新相关内容,有需要的朋友参考下. mysql触发器的例子,如下: view source print? 001 mysql> CREATE ...
- VC++2010添加菜单
1 资源视图下面右键添加资源 选择menu 2 创建你想要的menu 3 找到CDialog::OnInitDialog();在后面添加代码. CMenu menu; menu.LoadMenu ...
- git fork同步原作者
从github上获取源代码,一种是直接下载,但是无法改动后提交. 一种是fork一下,但是和原作者同步麻烦. 所以我找到了四个命令,解决同步问题. 以后建议大家fork一下,主要是哪天对源码熟悉了,想 ...
- 解决关于IIS10.0下无法安装 URL 重写模块 2的问题
win10 系统自带的IIS是IIS10.0,官网提示URL Rewrite 2.0是只要IIS7.0以上的版本就可以安装,但是在IIS10.0下安装却一直失败.错误提示如下: 那么如何才能正确安装呢 ...
- Centos安装gnome主菜单编辑器无
首选项---主菜单-- 即是alacarte.. centos ===安装 alacarte.noarch 0:0.12.4-1.el6 即可.
- 带节假日JS万年历控件代码
<form name="CLD" class="content"> <table width="100%" border= ...
- bzoj 4004: [JLOI2015]装备购买 拟阵 && 高消
4004: [JLOI2015]装备购买 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 337 Solved: 139[Submit][Status ...