• Ruby探微初步


    我的导师,曾经对我说过,常规编程语言大抵不过顺序条件循环

    接下来以Ruby为例,简单说说

    控制语句

    控制语句能让程序在某种条件下,改变执行顺序,或者只执行某一部分。

    控制语句的分类

    控制语句大致可以分成一下几类。

    • 顺序控制:按照程序的编写,从头到尾执行
    • 条件控制:若某条件成立,则执行ОО,否则执行ХХ。
    • 循环控制:在某条件成立之前,反复执行ОО。
    • 异常控制:发生某种异常时,执行ОО。
    • 顺序控制是程序最常见的处理方式。若不做特殊处理,程序会按照代码的编写顺序执行。
    • 条件控制是根据条件执行分之处理。如果没有满足条件,程序会跳过某部分处理,继续执行其他处理。 在Ruby中,可以使用条件判断语句有ifunlesscase等。
    • 异常控制有些特殊。程序执行是,意料之外的错误发生后,就会跳出正在执行的那部分的那部分程序,然后执行其他地方的程序,使程序能继续执行下去,或根据实际情况,有事也会让程序马上结束。

    接下来,我们逐步介绍

    1.条件判断:ifthenend

    if 语句用于根据条件变化,改变程序的行为。if 语句的语法如下所示:

    if 条件 then
     条件成立时执行的处理
    end
    

    条件一般是指指能返回 true 或者 false 的表达式。例如比较两个值,相同则返回 true,不同则返回 flase,这样的表达式可作为条件。
    我们在比较数值的大小时,会用到等号、不等号等运算符。在 Ruby 中,= 已经被用作赋值运算了,因此判断是否相等的运算符要用两个并列等号== 来代
    替=。另外,≤和≥运算符在 Ruby 中分别用 <= 和 >= 来替代。
    条件表达返回的结果为 true 或者 false,true 表示条件成立,false 表示条件不成立。

    p ("Ruby" == "Ruby") #=> true 
    p ("Ruby" == "Rubens") #=> false
    

    如果希望对条件成立和条件不成立时采取不同的处理,我们可以使用 else 关键字。

    if 条件 then  
    	条件成立时执行的处理 
    else  
    	条件不成立时执行的处理
    end
    
    # encoding:utf-8
    =begin
    在命令行指定多个脚本参数
    =end
    # 使用ARGV 后,程序需要使用的数据就不必写到代码中
    # 同事抽取数据、保存数据等普通的数组操作对于ARGV都是适用的
    # 从参数中获得的#都是字符串,可以用to_i字符串转整数
    #puts "首个参数:#{ARGV[0]}"
    #puts "第二个参数:#{ARGV[1]}"
    #puts "第三个参数:#{ARGV[2]}"
    num0 = ARGV[0].to_i
    num1 = ARGV[1].to_i
    
    puts "#{num0}+#{num1}=#{num0+num1}"
    puts "#{num0}-#{num1}=#{num0-num1}"
    puts "#{num0}*#{num1}=#{num0*num1}"
    if (ARGV[1].to_i)!=0 then
    	puts "#{num0}/#{num1}=#{num0/num1}"
    else 
    	puts "请重新输入非零除数
    "
    end
    

    2.循环

    有时,我们会遇到希望多次循环执行同样的处理的情况。下面,我们来介绍两种执行循环处理的方法。

    while 语句————
    执行循序时用到的一种基本语句。同样地,do关键字可以省略。

    while 循环条件 do
    	希望循环的处理
    end
    

    eg.

    i=1
    while i <= 10
    	print i, "
    "
    	i=i+1
    end
    

    times方法

    循环次数如果已确定,使用times方法会更加简单。

    循环次数.times do
    	希望循环的处理
    end
    

    eg:输入10行"All work and no play makes Jack a dull boy."

    100.times do
    	print "All work and no play makes Jack a dull boy.
    "
    end
    

    times 方法称为迭代器(iterator)。迭代器是Ruby的一个特色功能,聪迭代器的英文拼写我们可知,迭代器表示的是循环(iterate)的容器(-or)。类似的运算符(operator)也就是(operate)的容器(-or),等等。总之,迭代器就是指用于执行循环处理的方法。

    PS:Ruby除了tiems方法外,还提供了很多迭代器,典型的有each方法。其语法如下:

    数组.each do |变量|
    	希望循环的处理
    end
    

    each后面在do~end之间的部分称为块(block)。因此each这样的方法也可以称为带块的方法。我们可以吧多个需要处理的内容合并后写到块里面。

    块的开始部分为|变量|。each方法会把数组元素逐个拿出来,赋值指定的|变量|,那么块里面的方法就可以通过访问该变量,实现循环遍历数组的操作。

    实际操作,按顺序输出数组names的元素

     $ irb --simple-prompt
    >> names = ["张三","李四","王五","赵六"]
    => ["张三", "李四", "王五", "赵六"]
    >> names.each do |n|
    ?>    puts n
    >> end
    张三
    李四
    王五
    赵六
    => ["张三", "李四", "王五", "赵六"]
    

    每循环一次,就会把当前的数组元素赋值给变量|n|。

    散列

    散列(hash)也是一个程序里常用到的容器。散列是键值对(key-value pair)的一种数据结构。在 Ruby 中,一般是以字符串或者符号(Symbol)作为键,来保存对应的对象

    ps:“散列(hash)也是一个程序里常用到的容器。散列是键值对(key-value pair)的一种数据结构。在 Ruby 中,一般是以字符串或者符号(Symbol)作为键,来保存对应的对象”

    sym = :foo 	# 表示符号":foo"
    sym1= :"foo" # 意思同上
    
    

    符号能实现的功能,大部分字符串也能实现。但像散列键这样只是单纯判断“是否相等”的处理中,使用符号会比字符串比较更加有效率,因此在实际编程中我们也会时常用到符号。

    另外,符号与字符串可以互相任意转换。对符号使用 to_s 方法,则可以得到对应的字符串。反之,对字符串使用 *to_sym *方法,则可以得到对应的符号。

    eg

    $ irb --simple-prompt
    >> sym = :foo
    => :foo
    >> sym.to_s         # 将符号转换为字符串
    => "foo"
    >> "foo".to_sym     # 将字符串转换为符号
    => :foo
    
    

    “ 散列的创建

    创建散列的方法与创建数组的差不多,不同的是,不使用 [],而使用{}把创建的内容括起来。散列用=>来定义获取对象时所需的键(key),以及键相对应的对象(value)。

    address = {:name => "高桥", :pinyin => "gaoqiao", :postal => "1234567"}
    
    

    将符号当做键来使用时,还可以如下写

    address = {name: "高桥", pinyin: "gaoqiao", postal: "1234567"}
    
    
  • 相关阅读:
    MobileIMSDK连接后频繁掉线重连,提示会话超时失效,对方非正常退出或网络故障
    Android+SpringBoot+Vue+高德地图实现后台查看车辆实时位置功能
    Vue中集成高德地图API实现定位与自定义样式信息窗体
    Java中对接钉钉API获取数据流程
    Java中集成极光推送实现给Android提送消息通知(附代码下载)
    Android中集成极光推送实现推送消息通知与根据别名指定推送附示例代码下载
    PostGresSQL简介与Windows上的安装教程
    信息系统项目管理师-知识产权、项目收尾、标准规范核心知识点思维脑图
    信息系统项目管理师-项目成熟度模型、量化项目管理核心知识点思维脑图
    信息系统项目管理师-招投标法、政府采购法核心知识点思维脑图
  • 原文地址:https://www.cnblogs.com/jiahao89/p/5165063.html
Copyright © 2020-2023  润新知