打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ruby基础(一)

Ruby基础

1.对象、变量和常量

1.1 对象
在Ruby中表示数据的最基本单位是对象,任何数据都是对象,使用类来表示对象的种类。
一个某个类的对象称作对象的实例。

对象eg
数值Numeric1、2.5、3.0
字符串String"sdasd"、'sadad'
数组Array[]、[1,2,"asd]
散列Hash{}、{name:"aaa"}、{:name=>"aaa"}
正则Regexp/aaa/、/[abc]/
文件FileFile.open(filename)
符号Symbol:foo、:"foo"

所有的对象都有标识和值,Ruby中对象的标识(ID)是唯一的。可以通过object_id
或(id)方法获得对象的id。

arr=[1,2]arr1=[];p arr.object_id   #47376880589400p arr1.object_id   #47376880589380

equal?方法用来判断两个对象是否为同一个对象(id是否相同)

arr=[1,2]arr1=[];arr2=arr;p arr.equal? arr1     #falsep arr.equal? arr2     #true

ruby使用==来比较将个对象的值是否相等

str="foo"st="f"+"o"+"o"s="bar"p str==st   #truep str==s    #false

ruby还提供了eql?方法来判断两个对象的值是否相等,==和Object类定义的
方法,大部分情况下他们的执行结果时一样的,但是也有例外,数值类会重新定义eql?
方法。

p 1.0 == 1    #truep 1.0.eql? 1   #true

1.2 变量

Ruby中有四种变量,变量的命名决定了变量的种类

变量命名规则eg
局部变量以英文小写字母或_开头foo、_area
全局变量以$开头$foo
类变量以@@开头@@foo
实例变量以@开头@foo、@name

全局变量和局部变量

全局变量在不管在程序的那部分使用都是相同,局部变量在当前作用域中生效。

eg:在其他库中修改全局变量和局部变量的值
sub.rb修改变量的值

_local="a"$global=123

test.rb中引用sub.rb

_local="local"$global="global"require_relative 'sub'p _local    #localp $global   #123

局部变量为不同的模块所私有,所以没有改变,全局变量整个程序共有,
所以值被修改了。局部变量在数次赋值的时候初始化,引用了未初始化的局部变量程序会报错。

1.3 常量

常量和变量类似,用来保存一个对象的值,不过常量初始化后就不能改变了
常量以大写字母开头,ARGV、RUBY_VERSION都时与定义的常量。

1.4 保留字

Ruby中保留字不能用来作标识符。常见的保留字有 end、next、def、class等。
原则上来说我们在给变量和常量设置标识符时不要使用和保留字相近的单词。

1.5 多重赋值

a=1b=2c=3

可以合并为

a,b,c=1,2,3puts a      #1puts b      #2puts c      #3

赋值时给变量前面加上*,该变量可以用来收集为分配的值

a,b,*c=1,2,3,4p [a,b,c]  #c=[3,4]a,*b,c=1,2,3,4p [a,b,c]  #b=[2,3]

使用多重赋值交换两个变量的值

a,b=1,2a,b=b,ap [a,b]   #[2,1]

使用数组进行多重赋值

arr=[1,2]a,b=arrp a  #1p b  #2#只获取数组中的一个值c,=arrp c  #1

2.条件判断

ruby中的条件语句有if、unless、case.他们根据判断条件的值执行不同的操作,
判断条件总是返回true或false.

ruby中的真假值

真假值eg
truefalse和nil以外的所有对象
falsefalse、nil

ruby中用后来进行条件比较的有>、<、==等比较运算符,逻辑运算符&&、||、!,还有一些方法:
eg:

p /Ruby/ =~ "Ruby"   #=> truep "dasdsa".empty?    #=>fasle

一般返回真假值的方法都要以?结尾。

if语句(then可以省略) 条件为真时执行对象的语句

if 条件 then  处理程序elsif 条件 then  处理程序else    处理程序end

eg:

a=1;if a<1 then  print "a<1"elsif a<2 then  print "a<2"     #=>a<2else   print "a大于等于2"end

unless语句 条件为假时执行对象的语句

unless 条件 条家为假的处理程序else  条件为真的处理语句end

eg:

a=10unless a!=10  print "a等于10"  #=>a等于10else  print "a不等于10"end

case语句

case 比较对象when 值1 then   处理1when 值2 then   处理2when 值3 then   处理3else   处理4end

eg:

tags=["A","B"]tags.each do |tag|  case tag  when "a","A"    puts "tags has 'A'or'a'"  when "b","B"    puts "tags has 'B'or'b"  else    puts ""  endend

case语句在比较值相等时采用的时===,如上面的代码的when等价于,其中tag为右边

if "a"===tag||"A"===tag   puts "tags has 'A'or'a'"end

当时===的左边时数值或者字符串时,和==没有区别。此外===还有其他用途

a=/ruby/p a==="ruby"  #truep String==='sad'  #truep (1..2) ===2     #true

if修饰符和unless修饰符

if和unless可以像下面这样使用

a,b=2,1puts "a比b大" if a>b   # a比b大

等价于

a,b=2,1if a>b  puts "a比b大"end 

3.循环

Ruby中实现循环的方法有两种:

  1. 使用循环语句

  2. 使用方法实现循环

六种循环语句

1.times方法

times使用单纯执行一定次数的处理。

语法:

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

do~end可以用{~}代替

循环次数.times {  希望循环的处理}

times方法也可以获取快中当前的执行次数

5.time do |i|    ~~~end

eg:

10.times do |i|  puts "第#{i}次循环"end

for语句

for 变量 in 开始数值..结束数值 do    希望循环的处理end

eg:求1到5这些数字加起来的和

sum=0;for i in 1..5  sum+=i;endputs sum  #=>15

times方法和for语句的区别

for语句循环的开始和结束值可以任意指定。times方法的循环一定时从0开始的。

eg:遍历数组对象

arr=["hello",123]for i in arr  print "#{i} "  #hello 123end

while语句
不论那种类型的循环,while语句都可以胜任.

语法

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

eg:输出1~9的数字

i=1while i<10 do  puts i  #输出1~9  i+=1end

until语句

当不满足条件时执性循环语句语法:until 条件 do    希望循环的处理end    

eg:计算从0开始的整数的和,当和超过55结束

sum 1=0sum,i=0,0until sum>50  sum+=i  i+=1endputs sum  #55

each方法

each方法与for语句类似,ruby中for语句是用each方法实现的。语法:对象.each do |变量|     希望循环的处理end

eg:遍历数组

arr=[1,2,3]arr.each do |i|  puts i; end

eg:打印0~10之间的数字

(0..10).each do  |i|  puts i  #1  .... 10end

loop方法

loop是一种没有终止条件就会一直执行的循环的处理。语法:loop  do   puts "ruby"end

一般都要在某种条件下breadk跳出循环.负责会发生死循环。

4.循环控制

命令用途
break跳出循环
next跳到下一次循环

eg:打印0-5的数字

(0..10).each do  |i|  puts i  #1  .... 10  if i==5 then    break  endend
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Ruby学习笔记
初中生Python程序设计百问百答
Ruby语言学习手记
成员变量和局部变量
Python大佬精华总结笔记
js篇
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服