• Ruby on Rails入门篇


    Ruby是一门面向对象的脚本语言。

    Ruby On Rails简称为RoR或Rails,是按照MVC结构开发的开源网络应用框架。设计原则:Don't repeat yourself和Conventions over Configuration

    RubyGems是Ruby语言的包管理工具。

    学习资料:

    http://guides.ruby-china.org/getting_started.html

    http://www.runoob.com/ruby/ruby-tutorial.html

    http://ruby-doc.org/

    《Ruby on Rails Web开发学习实录》

    开发环境 window7 64 bit

    1.下载rubyinstaller-3.0.0.exe

    http://rubyinstaller.org/

    安装后自带的RubyGems, Rails 和SQLite3

    命令行输入 ruby -v 和Rails --version 检查是否安装成功。

    2.按照教程里的新建一个项目时,会由于网络原因下不下来gem,于是,找到万能的淘宝镜像:

    https://ruby.taobao.org/

    3. 安装Ruby的IDE RadRails

    http://www.aptana.com/products/radrails/download.html

    4. Ruby基础语法学习

    例:最简单的计算器:

    if __FILE__ == $0
      # TODO Generated stub
      puts "please input number 1:"
      number1=gets
      puts "please input an operator:"
      op=gets
      puts "please input number 2:"
      number2=gets
      
      case op.chomp
        when "+"
          result=number1.to_i+number2.to_i
        when "+"
          result=number1.to_i+number2.to_i
        when "+"
          result=number1.to_i+number2.to_i
         when "+"
          result=number1.to_i+number2.to_i 
      end
      puts "Result:#{number1.chomp}#{op.chomp}#{number2.chomp}=#{result}"
      end
    View Code

    gets返回包含用户输入值的一行字符串,chomp去掉尾部的换行符。

    4.1  变量

    • 常量名一般全大写
    • 局部变量用小写字母或者下划线开头

    注意:方法名也是由小写字母或下划线开头,如果没有参数的话,方法名后的括号可以省略,所以必须弄明白调用的是方法还是局部变量。

    • 全局变量是以$开头的
    • @开头:实例变量(Instance variable)。
    • @@开头:类变量(Class variable)类变量被共享在整个继承链中

    4.2 数据类型

    在Ruby中,基本数据类型也是对象。

    Ruby支持的数据类型包括基本的Number、String、Ranges、Symbols,以及true、false和nil这几个特殊值,同时还有两种重要的数据结构——Array和Hash。

    range类型:

    if __FILE__ == $0
      # TODO Generated stub
      a=0..59
      b=60...100
      c=b.to_a
      puts "minimum a: "+(a.min).to_s
      puts "maxmum: b: "+(b.max).to_s
      puts "end a : "+(a.end).to_s
      puts "first b : "+(a.first).to_s
      puts b.include?100
      puts "c.length="+(c.size).to_s
    end

    输出:
    minimum a: 0
    maxmum: b: 99
    end a : 59
    first b : 0
    false
    c.length=40


    范围迭代器:

    • regect 将范围转换成一个数组,并删掉满足条件的元素
    • select 将范围转换成一个数组,只选择满足条件的元素
    • each  输出迭代范围内的每个元素
    if __FILE__ == $0
      # TODO Generated stub
      count=10..20
    alphabet="A".."J" print count.reject{|i|i<15} puts " " print count.select{|i|i<15} puts " " count.each do|i| puts i.to_s end end #输出: [15, 16, 17, 18, 19, 20] [10, 11, 12, 13, 14] 10 11 12 13 14 15 16 17 18 19 20

    符号类型:

    符号对象是一个字符串、一个方法、一个类或者一个标识符的内部表现形式,在对象名前加一个冒号:就行了。

    if __FILE__ == $0
      # TODO Generated stub
      dcy="我是女生"
      ly=:"我是女生"
      dcyandly=%s{dcy}
      #比较内容
      puts dcy.to_sym==ly
      puts ly.to_s==dcy
      #比较对象
      puts ly==dcyandly
    end
    
    #输出
    true
    true
    false

    数组类型

    组字面量通过[]中以逗号分隔定义,且支持range定义。

    • (1)数组通过[]索引访问
    • (2)通过赋值操作插入、删除、替换元素
    • (3)通过+,-号进行合并和删除元素,且集合做为新集合出现
    • (4)通过<<号向原数据追加元素
    • (5)通过*号重复数组元素
    • (6)通过|和&符号做并集和交集操作(注意顺序)
    if __FILE__ == $0
      # TODO Generated stub
      #创建或初始化数组
      names=Array.new
      names2=Array.new(20)
      names3=Array.new(4,"mac")
      nums=Array.new(10) {|e| e=e*2}
      nums2=Array.[](1,2,3,4,5)
      nums3=Array[1,2,3,4,5]
      digits=Array(0..9)
      num=digits.at(6)
      puts names2.size
      puts names2.length
      puts "#{names3}"
      puts "#{nums}"
      puts "#{digits}"
      puts "#{num}"
    end
    
    输出:
    20
    20
    ["mac", "mac", "mac", "mac"]
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    6
    View Code

    哈希类型

    哈希是在大括号内放置一系列键/值对,键和值之间使用逗号和序列 => 分隔。尾部的逗号会被忽略。Hash 的元素没有特定的顺序。 如果顺序很重要的话就要使用数组了。

    if __FILE__ == $0
      # TODO Generated stub
      months=Hash.new
      months=Hash.new("month")
      H=Hash["a"=>100,"b"=>200]
      keys=H.keys
      puts "#{months[0]}"
      puts "#{months[72]}"
      puts "#{H['a']}"
      puts "#{keys}"
    end
    
    输出:
    month
    month
    100
    ["a", "b"]

    4.3 运算符和赋值

    表达式与常量比较时用===

    • 直接赋值
    • 并行赋值
    • 嵌套赋值
    if __FILE__ == $0
      # TODO Generated stub
      p=2
      p**=2
      score=600
      puts p.to_s
      puts 5<=>8
      puts 5<=>5
      puts 8<=>5
      puts (1..10)===9
      puts "我是誰"==="誰是我"
      s=score<100?"yes":"no"
      puts s
    end
    
    输出:
    4
    -1
    0
    1
    true
    false
    no
    View Code
    if __FILE__ == $0
      # TODO Generated stub
      #并行赋值
      c,d =12,21
      c,d=d,c
      puts c,d
      # 嵌套赋值
      weather=["","","",""]
      b,(c,d),e=weather
      puts b.to_s,c.to_s,d.to_s,e.to_s
      puts "
    "
      b,(c,*d),e="",["","","不冷不热"],""
      puts b.to_s,c.to_s,d,e.to_s
    en
    
    输出:
    21
    12
    春
    夏
    
    秋
    
    春
    夏
    秋
    不冷不热
    冬
    View Code

    4.4 条件语句

    if..elsif..else..end

    if.. then..end

    case expression
    [when expression [, expression ...] [then]
       code ]...
    [else
       code ]
    end

    4.5 循环语句

    while..do ..end

    for..in..do ..end

    跳转语句:break---跳出当前循环

                  next---跳出本次循环,进入下一个循环

                  redo---跳出本次循环执行下一次循环,但是不简称循环条件是否成立

                  return----结束方法,并有返回值

    if __FILE__ == $0
      # TODO Generated stub
      for x in 1..9
        for y in 1..x
          if x==y
            print y,"X",x,"=",x*y,""
            puts ""
          else
            print y,"X",x,"=",x*y," "
          end
        end
      end
    end
    
    输出:
    1X1=1
    1X2=2 2X2=4
    1X3=3 2X3=6 3X3=9
    1X4=4 2X4=8 3X4=12 4X4=16
    1X5=5 2X5=10 3X5=15 4X5=20 5X5=25
    1X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=36
    1X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=49
    1X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=64
    1X9=9 2X9=18 3X9=27 4X9=36 5X9=45 6X9=54 7X9=63 8X9=72 9X9=81
    if __FILE__ == $0
      # TODO Generated stub
      i=1
      while i<5 do
        if(i==5)
          i+=1
          redo
        end
        puts i.to_s
        i+=1
      end
    end
    
    输出:
    1
    2
    3
    4
    View Code



  • 相关阅读:
    机器学习笔记之数据预处理(Python实现)
    机器学习笔记之matplotlib绘图核心原理
    机器学习笔记之Matplotlib库legend() scatter() plot() figure() subplot()函数参数解释
    Kafka学习笔记之kafka常见报错及解决方法(topic类、生产消费类、启动类)
    Elasticsearch学习笔记之Prometheus监控ElasticSearch核心指标
    Kafka学习笔记之Kafka应用问题经验积累
    Kafka学习笔记之kafka.common.KafkaException: Should not set log end offset on partition
    CRM 价格更新
    定时 任务 C# 思路
    使用ExtentReports生成Testng测试报告
  • 原文地址:https://www.cnblogs.com/flyingbee6/p/5152773.html
Copyright © 2020-2023  润新知