Ruby基础教程(Day4)—— 对象、变量和常量

对象

在Ruby中,表现数据的基本单位称为对象,对象的类型非常多。

  • 数值对象
    • 1、-10、3.1415等是表示数字的对象,另外还有表示矩阵、复数、质数、公式的对象
  • 字符串对象
    • “你好”、“Hello”、等表示字符序列的对象
  • 数组对象、散列对象
    • 表示多个数据的集合的对象
  • 正则表达式对象
    • 表示匹配模式的对象
  • 时间对象
    • 比如“2016 年1月31日早上9点”等表示时间的对象
  • 文件对象
    • 一般我们可以理解为表示文件本身的对象,但确切来说,它是对文件进行读写操作的对象
  • 符号对象
    • 表示用于识别方法等名称的标签的对象
    • 除此之外,Ruby还有范围对象(range)、异常对象(exception)等

Ruby的表示的就是对象的种类。对象拥有什么特性等,这些都是由类决定的。到目前为止,我们介绍的对象与其所属类的对象关系如下表所示

对象
数值Numeric
字符串String
数组Array
散列Hash
正则表达式Regexp
文件File
符号Symbol

变量

变量的命名方式决定了变量的种类。

  • 全局变量
    • 以$开头
    • 只要全局变量的名称相同,不管变量在程序的哪个部分使用,程序都认为它们是同一个变量。一般不推荐使用全局变量。全局变量的值在程序的任何地方都可以修改,因此在规模较大的程序中使用时,会增加程序不必要的复杂度,给阅读程序、修改程序造成意想不到的麻烦。
  • 局部变量
    • 以英文小写字母或者 _开头
    • 所谓局部变量,即变量在程序中的有效范围(变量的作用域)是局部的。就是说在程序某个地方声明的变量名,在其他地方也可以使用,只要这两个地方没有关系,程序就会认为这两个变量是不同的变量。程序首次给局部变量赋值时,该局变量就被初始化了。如果引用了未初始化的局部变量,程序会发生错误。
  • 实例变量
    • 以 @ 开头
  • 类变量
    • 以 @@ 开头

除了以上四种类型外,还有一种名为 伪变量 的特殊变量。伪变量是Ruby预先定义好的代表某特定值的特殊变量,因此即使我们在程序中给伪变量赋值,它的值也不会改变。Ruby中,niltrue、、falseself、等都是伪变量。它们表面上虽然看着像变量,但实际的行为又与变量有差别,因此称为伪变量。

常量

  • 常量的作用和变量一样,是某个对象的名片。不同的是,对已经赋值的常量再进行赋值时,Ruby会发出警告。对于程序中多次引用且固定不变的值,我们会用常量来定义。
  • 常量以大写英文字母开头。例如,Ruby的运行版本(RUBY_VERSION)、运行平台(RUBY_PLATFORM)、命令行参数数组(ARGV)等,都是Ruby预定义好的常量。

保留字

  • 有些收到限制的单词,我们称为保留字。在程序如果不小心使用了endnext等作为变量名,Ruby会提示我们语法错误
  • Ruby的保留字一览
_ LINE __ ENCODING __ FILE _BEGINEND
aliasandbeginbreakcase
classdefdefined?doelse
elsifendensurefalsefor
ifinmodulenextnil
notorredorescueretry
returnselfsuperthentrue
undefunlessuntilwhenwhile
yield

多重赋值

  • Ruby还提供了一个只用一个表达式就能给多个变量赋值的简便方法—多重赋值
  • 合并执行多个赋值操作
a=1
b=2
c=3

可以简化为一行
a,b,c=1,2,3

  • 交换变量的值。通常我们需要一个临时变量暂时保存变量的值
a,b=0,1
tmp=a   		 # 暂时保存变量 a 的值
a=b 			 # 将变量 b 的值赋值给 a
b=tmp 			 # 将原本变量 a 的值赋值给变量 b
p[a、b] 		 #=> [1, 0]

使用多重赋值,只需一行程序就搞定了

	a,b=0,1
	a,b=b,a   		# 交换变量 a、b 的值
	p[a,b]    	    #=> [1, 0]
  • 获取数组的元素
    • 用数组赋值时,如果左边有多个变量,Ruby会自动获取数组的元素进行多重赋值
    	ary = [1, 2]
    	a, b = ary
    	p a #=> 1
    	p b #=> 2
    

变量的命名方法

  • 使用简单易懂的单词
  • 不要过多使用省略的名称
  • 对于多个单词组合的变量名,使用_隔开各个单词,或者单词以大写字母开头
  • 也就是说,要么叫作 sort_list_by_name ,要么叫作 sortListByName
  • 一般来讲,Ruby 中的变量名和方法名使用前者,类名和模块名使用后者。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值