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


    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

  • 相关阅读:
    WHERE col1=val1 AND col2=val2;index exists on col1 and col2, the appropriate rows can be fetched directly
    MySQL 交集 实现方法
    MBProgressHUD的使用
    Xcode4 使用 Organizer 分析 Crash logs(转)
    SimpleXML 使用详细例子
    PHP的XML Parser(转)
    iPhone,iPhone4,iPad程序启动画面的总结 (转)
    Pop3得到的Email 信件格式介绍
    yii总结
    隐藏Tabbar的一些方法
  • 原文地址:https://www.cnblogs.com/scotth/p/3162506.html
Copyright © 2020-2023  润新知