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



原文地址:https://www.cnblogs.com/flyingbee6/p/5152773.html