4.6.9 范围  Flip-Flops:  ..和...

..和... 操作符不是基于方法的,无法重定义。(优先级比较低)

x+1 .. x*x     #可以认为是x+1 至 x*x 的范围

因为操作符的值是一个Range对象,  下面3种表达方式都是一样的

1)  x..y

2)Range.new(x,y)

3) Range.new(x,y,true)

表达式 Flip-Flops的值可以是ture/false布尔值

..与...的区别:

当..filp-flops为true时,它返回true,并检验它的右侧表达式以决定是否将其内部状态状态设置回false

对于...filp-flops,则要等到下次求值的时候,才会测试其右侧表达式。

例子

(1..10).each  { |x|   print x if x==3..x>=3}    #先判断x ,返回true/false,然后输出x

结果:3

(1..10).each  { |x|   print x if x==3...x>=3}  #先输出x,再判断x, 然后返回true/false

结果:34

ruby的filp-flops是继承自perl的,perl来源于Unix的awk 和sed(以下有awk、sed的讲解链接)

..类似awk的filp-flops    http://coolshell.cn/articles/9070.html

...类似sed的filp-flops   http://coolshell.cn/articles/9104.html

http://linux.chinaunix.net/techdoc/develop/2007/02/10/950229.shtml

...有阴暗面。能不用就不用吧.

4.6.10 条件操作符?    (三元操作符)

x==3?Y:z  # OK,  legal

3==x?y:z  # synax error,    x? 被解释为方法名

(3==x)?y:z   #括号解决了(x? 被解释为方法名)的问题

3==x ?y:z   #空格也可以解决  ---(x? 被解释为方法名)的问题

若遇上多个?,则从最小的开始判断,(从右到左)

a ? b : c ? d : e    #先得出c,再得出a

max = x>y ? x>z ? x : z : y>z ? y:z

4.6.12 define?操作符

define?是一个一元操作符。它测试 其操作数是否已经被定义过。(通常使用未定义的变量和方法,都会产生异常。)

define?对于全局变量,方法,super类、、、、什么的返回值看书。   在P113

define?操作符优先级很低,

define?a and define?b   # ok,  检查是否定义了a 和b ,

define?a && define?b   # 变成了 (define? (a && define?b ) )

所以尽量清晰点。

4.6.13 语句修饰符

Tips:rescue 左侧表达式的异常,会影响右侧表达式的执行

4.6.14 非操作符    P115

()

[]

{}

.

::

#以下3个是分隔符

;      #用于分隔同一行的多个语句

,    #逗号, 用于分隔方法参数,数组,hash字面量中的元素

=>   #用于hash字面量中,分隔hash键和hash值

:    #一个冒号,  用作 符号字面量的前缀 (ruby 1.9 用于hash)

*    #展开或拆开数组中的单个元素

&     #在方法定义中,将&放在最后一个参数的前面,这会将任何传递给该方法的代码快,赋给该参数。

<     #在类定义中,指定当前类的super

ruby编程语言-学习笔记4(第4章 表达式和操作符)的更多相关文章

  1. ruby编程语言-学习笔记5(第5章 语句和控制结构)

    以下是2种表达方式一样. if expression code end if expression then #推荐这种形式 code end expression的值不是false或nil,则cod ...

  2. ruby编程语言-学习笔记2(第4章 表达式和操作符)

    对属性和数组元素的赋值 o.m + = 1  ===>o.m = (o.m()+ 1)  # 对 o.m()这个方法的结果+1 对数组元素的赋值也是通过 方法调用来完成. 0.[] = 1 == ...

  3. ruby编程语言-学习笔记3(第4章 表达式和操作符)

    4.6 操作符 了解优先级很重要 位移操作符 (0b1011)<< 1       #   ==> "10110"      11 << 1 = 22 ...

  4. ruby编程语言-学习笔记1

    安装完 ruby ri irb ruby-devel 1. 先来个简单的,写个helloworld  给新手们 (terminal中,# 代表root权限,$ 代表用户权限, 前面的就不写了.) # ...

  5. C++ premier 中文版 学习笔记(第五章 表达式)

    解应用和自增组合使用的理解 由于后自增操作的优先级高于解引用操作,因此 *iter++ 等效于*(iter++).子表达式 iter++ 使 iter 加 1,然后返回 iter 原值的副本作为该表达 ...

  6. 【c++ Prime 学习笔记】第4章 表达式

    表达式由一个或多个运算对象组成,对表达式求值返回结果. 字面值和变量是最简单的表达式 把运算符和运算对象组合可得到复杂表达式. 4.1 基础 4.1.1 基本概念 一元运算符作用于一个对象,如取地址符 ...

  7. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第四章:Direct 3D初始化

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第四章:Direct 3D初始化 学习目标 对Direct 3D编程在 ...

  8. 《深入Java虚拟机学习笔记》- 第19章 方法的调用与返回

    <深入Java虚拟机学习笔记>- 第19章 方法的调用与返回

  9. 《深入Java虚拟机学习笔记》- 第16章 控制流

    <深入Java虚拟机学习笔记>- 第16章 控制流

随机推荐

  1. ubuntu12.10可用更新源

    ubutnu12.10自带的更新源已经失效,国内各大服务器的更新源,无论是网易.搜狐还是教育网的因此也失效了.附件是ubuntu12.10目前的可用更新源. 将地址中的“us.archive”换成“o ...

  2. 编译内核,配置内核make menuconfig

    http://blog.csdn.net/xuyuefei1988/article/details/8635539 make make modules_install make install 模块安 ...

  3. iPad知识点记录

    这两天玩了玩虚拟机安装Mac OS系统.iPad1的越狱以及利用iTunes将iPad2的系统升级到iOS8.1,这里将一些参考资源以及关键点记录一下. 一.虚拟机安装Mac OS 首先你的系统要能够 ...

  4. 自定义弹出div对话框

    <style type="text/css"> html,body{height:100%;overflow:hidden;} body,div,h2{margin:0 ...

  5. 51nod1242 斐波那契数列 矩阵快速幂

    1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 #include<stdio.h> #define mod 100000000 ...

  6. PHP初学留神(四)

    这周去听了Google的演讲,从Idea到Code的商业宣传.不过因为是头一次听英文演讲,心里还是很舒服.这周主要做的是Bootstrap前端美化,这个框架也比较好玩.在php上面花的时间相对少了,也 ...

  7. WIN32api总结

    1.鼠标操作: win32api.SetCursorPos((101,156)) win32api.mouse_event(win32con.MOUSEEVENT_LEFTDOWN,0,0,0,0) ...

  8. Xcode - 必不可少的插件

    1. backLight 2.  BBUDebuggerTuckAway 3. Cocoapod 4. FuzzyAutoComplete 5. HOStringSense 6. KissImageN ...

  9. 对html进行SEO的一点点总结

    1. 要考虑用户用哪些关键在查找您的网页 2. SE无法识别图形中的内容 3. 确保title和alt中的内容准确 4. 尽量用静态页,如果是动态页,参数要少 5. 每个图片都尽量用alt 6. 不用 ...

  10. JS数组整理

    1. 检测数组的方法: 1. instanceof[操作符]: var arr = []; console.log(arr instanceof Array);//true 1. instanceof ...