博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ruby on Rails入门篇
阅读量:6420 次
发布时间:2019-06-23

本文共 4546 字,大约阅读时间需要 15 分钟。

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

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

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

学习资料:

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

开发环境 window7 64 bit

1.下载rubyinstaller-3.0.0.exe

安装后自带的RubyGems, Rails 和SQLite3

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

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

3. 安装Ruby的IDE RadRails

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_send 输出: 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 "\n"  print count.select{|i|i<15}  puts "\n"  count.each do|i|    puts i.to_s  endend#输出:[15, 16, 17, 18, 19, 20][10, 11, 12, 13, 14]1011121314151617181920

符号类型:

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

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

数组类型

组字面量通过[]中以逗号分隔定义,且支持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输出:2020["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输出:monthmonth100["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 send输出:4-101truefalseno
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 "\n"  b,(c,*d),e="春",["夏","秋","不冷不热"],"冬"  puts b.to_s,c.to_s,d,e.to_sen输出:2112春夏秋春夏秋不冷不热冬
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  endend输出:1X1=11X2=2 2X2=41X3=3 2X3=6 3X3=91X4=4 2X4=8 3X4=12 4X4=161X5=5 2X5=10 3X5=15 4X5=20 5X5=251X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=361X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=491X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=641X9=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  endend输出:1234
View Code

 

 

 

转载于:https://www.cnblogs.com/flyingbee6/p/5152773.html

你可能感兴趣的文章
git笔记
查看>>
Android开源中国客户端学习 配置文件读写 以及其他一些工具类 <13>
查看>>
国外的opencv识别文档
查看>>
java获取指定字符串的下一个
查看>>
多行数据提交到Struts的ActionForm的List属性中
查看>>
理解RESTful架构
查看>>
Linux自动压缩备份目录文件与恢复
查看>>
Android 图片相关整理
查看>>
创建一个Hello World(React),组件的作用
查看>>
java中的context
查看>>
Spring源码阅读——3
查看>>
使用ZXing生成可供手机识别的二维码
查看>>
griedview setOnItemLongClickListener 无效
查看>>
pyqt在控件上创建图片
查看>>
邮件服务器被***根源及解决方案
查看>>
Linux IO实时监控iostat命令详解
查看>>
企业软件仓库部署及应用案例(基于CentOS 6的YUM源)
查看>>
探寻路径
查看>>
微访谈活动-企业微博2.0与数据微博营销(转)
查看>>
Android生命周期
查看>>