zoukankan      html  css  js  c++  java
  • ruby 关键字运算符分隔符基本语法

    关键字、运算符、分隔符

    关键字、运算符、分隔符一起构成了一门编程语言的基本定义

    Ruby中的常用分隔符如下:


    符号

    名称

    用途


    分号

    用来分隔一行中的多个语句

    ()

    圆括号

    提高优先级;定义方法时容纳参数列表

    " "

    空格/分隔字符

    在可省略"()"的地方代替"()"


    逗号

    隔开多个参数


    将对象与它的方法隔开


    ::

    双冒号

    域作用符,将模块(类)与它的常量隔开

    Ruby中的关键字如下:


    模块定义:module
    类定义: class
    方法定义:def,undef
    检查类型:defined?
    条件语句:if,then,else,elsif,case,when,unless
    循环语句:for,in,while,until,next,break,do,redo,retry,yield
    逻辑判断:not,and,or
    逻辑值: true,false

    空值:  nil   
    异常处理:rescue,ensure   
    对象引用:super,self   
    块的起始:begin/end 
    嵌入模块:BEGIN,END   
    文件相关:__FILE__,__LINE__
    方法返回:return
    别名:  alias

    注:BEGIN模块相当于C语言中的宏, END模块用来作一些收尾工作。有了require,include,应该取消BEGIN和END的语法定义。

    ruby中的运算符如下:优先级(由高到低)


    能否重写
    运算符
    描述

    Y    
    []、[]=
    数组下标、数组元素赋值

    Y
    **
    乘冥

    Y
    !、~、+、-
    非、位非、一元加(正号)、负号

    Y
    *、/、%
    乘、除、模

    Y
    +、-
    加、减

    Y
    >>、<<
    右移、左移

    Y
    &
    位与

    Y
    ^、|
    位异或、位或

    Y
    <=、<、>、>=
    小于等于、小于、大于、大于等于

    Y
    <=>、==、===、=~、!=、!~
    各种相等判断(不能重写=~、!=、!~)

    N
    &&
    短路与

    N
    ||
    短路或

    N
    ..、...
    区间的开始点到结束点

    N
    ? :
    三元条件运算符

    N
    =、%=、~=、/=、-=、+=、|=、&=、>>=、<<=、*=、&&=、||=、**=
    各种赋值

    N
    defined? 
    检查类型

    N
    not 
    逻辑非

    N
    or、and 
    逻辑或、逻辑与

    N
    if、unless、while、until 
    判断与循环

    N
    begin、end 
    定义方法,类,模块的范围

    值得注意的是,ruby中没有"++"、"--"一类的运算符,但可以通过"+=1"、"-=1"实现。

    1.1      变量、常量和类型
    1)      定义变量

    变量类型

    描述

    示例

    局部变量(或伪变量)

    以小写字母或下划线卡头

    var    _var

    全局变量

    $开头

    $var

    类变量

    类中定义,以@@开头

    @@var

    实例变量

    对象中定义,以@开头

    @var

    常量

    以大写字母开头

    Var

     
     
    2) 变量内插
      在双引号内使用“#{变量名}”内插变量

    a = 2

    b = 3

    puts "#{a} + #{b} = #{a+b}"  #输入结果为:2 + 3 = 5

     
     
    1.2 注释
    1)单行注释:以#开头,如: #注释内容
    2)多行注释:在=begin 和 =end 之间定义,如:
    =begin
    注释内容
    =end
     
    1.3    循环和分支
    1.3.1  条件语句

    If 形式

    unless 形式

    a =1 if y==3

    a=1 unless y!=3

    x= if a > 0 then b else c end

    x= unless a<=0 then a else b end

     if x<5 then

      a =1

    else

       a =2

    end

    unless x<5 then

       a =2

    else

       a =1

    end

     
    1.3.2  循环结构

    #while循环

    i= 0

    while i< list.size do

    print “#list[i] ”

    I += 1

    end

    #until循环

    i= 0

    until i == list.size do

    print “#list[i]”

    i += 1

    end

    #for循环

    for x in lisy do

     print “#{x}”

    end

    #each循环

    list.each do |x|

     print “#{x}”

    end

    #loop循环

    i = 0

    n = list.size-1

    loop do

    print “#{list[i]}”

    i += 1

    break if i > n

    end

    #times循环

    n = list.size

    n.times do |i|

     print “#{list[i]}”

    end

    #upto循环

    n =list.size–1

    0.upto(n) do |i|

     print “#{list[i]}”

    end

    #each_index循环

    list.each_index do |x|

     print “#{list[x]}”

    end

     
     
    1.3.3  异常

    begin

        x = Math.sqrt(y/z)       

    rescue ArgumentError       #匹配错误类型

        puts "Error taking square root"

    rescue ZeroDivisionError     #匹配错误类型

        puts "Attempted division by zero"

    else

        puts "Other Error"

    ensure

        #这部分代码在最后一定会执行

    end

     
     
    1.3.4  类

    class Hello #类名必须以大写字母开头

     @@myname = "John"   #类变量

     

     def initialize(name,phone)

          @name,@phone = name,phone #定义实例变量

     end

     

     def hello #定义类方法

        puts "#{@name}的电话是#{@phone}" 

     end

    end

     

    f = Hello.new("Tom","13100000000") #创建类对象

    f.hello #调用类方法,结果为:Tom的电话是13100000000

     
    1.3.5  模块

    方法

    说明

    include ‘watir’

    将模块的功能添加到当前空间中,不加载已加载的文件

    extend ‘watir’

    将模块的函数添加到对象中

    load ‘watir’

    读取文件,并将其插入到源文件的当前位置,以便从这个位置开始就可以使用其定义

     
    1.3.6  case语句

    case x

     when 1..10              #匹配数字

        puts "First branch"

     when foobar()           #批量方法返回的值

        puts "Second branch"

     when /^hel.*/           #匹配正则表达式

        puts "Third branch"

     else  

        puts "Last branch"

    end

  • 相关阅读:
    第三课 本代码用于学习vue根组件数据的各种绑定
    第七课 键入事件,点击绑定事件,数据判断及删除事件
    第九课 代码封装localstorage
    第八课 没有封装localstorage
    第五课 vue的事件调用自定义方法
    第六课 点击事件调用自定义方法
    new多个文件编程和split单个文件多个窗口编程
    线性表特点和用法总结
    scanf在输入整型数据和字符型数据时的不同
    tasklet源码注释翻译
  • 原文地址:https://www.cnblogs.com/rywx/p/2540997.html
Copyright © 2011-2022 走看看