博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

sislcb

寻找自己
sislcb.cublog.cn
Ruby On Rails入门经典 第二章 条件,循环,方法和块
流程控制结构
  • if表达式 then代码块 [elsif表达式 then代码块]..[else代码块]end
  • case表达式when表达式..;代码块...[else代码块]end
  • while表达式;代码块end
  • for变量..in表达式;代码块end
  • unless ~ end
  • a = 7               # 为变量 a 赋值代入 7。
    unless a >= 10      # 如果 a 不为 10 以上的话,
      print "small"     #   显示 small。
    end                 # 分歧结束。

    temperature = 76
    if temperature > 85
      puts 'Too hot'
    elsif temperature < 65
      puts 'Too cold'
    else
      puts 'OK'
    end

    case command
    when 'Go'
      puts 'Go'
    when 'Wait'
      puts 'Wait'
    end

    三重操作符:?:  resutl = codition?true_value:false_value

    while($_ != 'Q')
     puts 'no quit'
    end

    until($_ == 'q')
      puts 'quit'
    end

    for value in 1..10
      puts 'the iteration ' + value.to_s
    end

    break
    中断循环(相当于C语言的break)。
    next
    开始下一次循环(相当于C语言的continue)。
    redo
    重新执行块的第一行。
    retry
    重新开始一个循环或者迭代器

    1.upto(10) do |number|
      puts number.to_s
      retry if $_ == 'r'
    end

    ruby迭代器
    upto,downto,step,each,times

    grades[] = {88, 99, 73, 56, 87, 64}
    0.upto(grades.length-1) do |loop_index|
      sum += grades[loop_index]
    end

    five=5
    five.tims do
     puts 'echo'
    end

    grades.each do |grade|
      sum += grade
    end


    ruby创建和调用方法

    def hello
      return "您好"
    end

    def hello
      return "晚安"
    end

    p hello         # => "晚安"

    在 Ruby 中,函数名称重复的话不会出现错误。这种情况下系统会认定后面定义的函数有效,而先前的定义就无效了。

    传递参数:
    def greeting(message)
      puts message
    end

    可变个数的参数
    最后一个参数加上一个*,相当于一个数组
    def putter(first_word, *others)
      puts first_word + " " + others.join(" ")
    end

    返回值:
    def adder
      return 'just a test'
    end
    默认可以没有return,直接 'just a test',也可以返回

    返回多个值:
    def greeting
      return "First", "Second"
    end
    word_one, word_two = greeting

    array = [1, 2, 3, 4]
    def returner
      return array 
    end

    使用块:
    一个块可以是一段代码,可以象传递一个参数一样将其传递给一个方法
    def greeting
      yield
    end

    greeting { puts "Hello "}
    yield调用这个块的代码,执行该块中的代码。

    def greeting
      yield "hello", "here"
    end

    greeting {|word_one, word_two| puts word_one + " " + word_two }
    结果同上个语句,可以传递参数给块。

    发表于: 2007-11-05,修改于: 2007-11-05 21:37,已浏览690次,有评论0条 推荐 投诉

    给我留言
    版权所有 ChinaUnix.net 页面生成时间:0.01192