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章 异常
随机推荐
- java.util.regx Demo
import java.util.regex.Matcher;import java.util.regex.Pattern; public class TestRegex { public stati ...
- Linux C 程序 字符串运算符-表达式(TWO)
1.字符串常量 双引号"" :eg:"china" ,字符串在存储的时候会以一个\0为结束标志.2.符号常量 ,给常量取一个名字. #include< ...
- C#基础(七)——静态类与非静态类、静态成员的区别
静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量.在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例 ...
- 【原】yield的最基本用法
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Itca ...
- 【原】.Net之美学习笔记-第1章-1.1.1值类型
结构还有一个特性:调用结构上的方法前,需要对其所有的字段进行赋值.
- 前端资源多个产品整站一键打包&包版本管理(四)—— js&css文件文件打包并生成哈希后缀,自动写入路径、解决资源缓存问题。
问题: 当我们版本更新的时候,我们都要清理缓存的js跟css,如何使得在网页中不需要手动清理呢? 答案: 生成带有哈希后缀的js跟css文件 1.文件路径 路径中的conf.js 是用于放置全局打包的 ...
- RepeatedDNASequences BestTime_to_Buy_and_SellStockIV
/** * @Author: weblee * @Email: likaiweb@163.com * @Blog: http://www.cnblogs.com/lkzf/ * @Time: 2015 ...
- hdu 5510 Bazinga KMP+尺取法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5510 题意:至多50组数据,每组数据至多500个字符串,每个字符串的长度最长为2000.问最大的下标( ...
- Oracle数据库插入图片和读取图片
package com.basicSql.scroll_page; import java.io.File; import java.io.FileInputStream; import java.i ...
- P1631: [Usaco2007 Feb]Cow Party
还是水题,接近于裸的spfa(个人比较喜欢用spfa,dijkstra不太喜欢用),代码附上 ; type link=^node; node=record t,d:longint; f:link; e ...