Ruby基础知识之数据类型_ruby专题

一、数值类型

(1)整型
整型分两种,如果在31位以内(四字节),那为Fixnum实例。如果超过,即为Bignum实例。

复制代码 代码如下:

#整型 Integer 以下是一些整型字面量
#字面量(literal):代码中能见到的值,数值,bool值,字符串等都叫字面量
#如以下的0,1_000_000,0xa等
a1=0
#带千分符的整型
a2=1_000_000
#其它进制的表示
a3=0xa
puts a1,a2
puts a3
#puts print 都是向控制台打印字符,其中puts带回车换行符
=begin
这是注释,称作:嵌入式文档注释
类似C#中的/**/
=end

(2)浮点型

复制代码 代码如下:

#浮点型
f1=0.0
f2=2.1
f3=1000000.1
puts f3 

浮点有个圆整错误,例如:0.4-0.3==0.1
这是不等的。C#中也是如此(采用IEEE-754浮点的都是如此)。因为很多浮点数是用一种近似值来表示的。例如0.1,它只是无限接近0.1。因为0.1不能用二进制精确表示。但0.5可以。

复制代码 代码如下:

puts 0.3-0.2==0.1 #false
puts 0.8-0.3==0.5 #true
puts 0.8-0.7==0.1 #false

(3)算术操作
加减乘除操作符:+-*/;指数操作符为**
指数不必是整数,例如

复制代码 代码如下:

#指数算术
puts 2**(1/4)#1与4的商为0,然后2的0次方为1
puts 16**(1/4.0)#1与4.0的商为0.25(四分之一),然后开四次方根

(二)字符串类型
字符串型可以用单引号或双引号表示。两种表式方法双引号推荐使用:双引号转义字符全;双引号中的字面量可以包含表达式。
字符串内插格式为:#{}

复制代码 代码如下:

name="Ruby"
puts name
puts "#{name+",ok"}"

字符串分界符
可以通过字符串分界符来定义字符串字面量。
%q用于单引号规则
%Q用于双引号规则
分界符成对出现的,例如:(),[],{},两个!!。如果使用!做为分界符,其中字面量中又出现了!号,那么,需要\!来转义。当然,如果其中的字面量中出现了成对的分界符(其实是做为操作符出现的),那不需要转义的。

复制代码 代码如下:

#分界符
s1=%Q[this ''/ssss123]
puts s1
#字面量中有分界符,一般情况下要做转义操作
s2=%Q!this ''/ssss123\!\!!
puts s2
#字面量中有成对的分界符出现,可以不做转义
s3=%Q(2*(1+1))
puts s3

在大字符串字面量中,不可保证分界符不出现。在ruby中支持header document。即通过定义分界字符串来定义字面量,可大大保证成功率。
通过<<或<<-紧临header 来定义,且结束段单独一行。如果通过<<-来定义的,则结束行前可加空白符。例如:

复制代码 代码如下:

#分界字符串
s1=<<Header
sdfie''''//////[]
Header
puts s1

字符串操作
(1)用+号进行字符串连接。对于不是字符串的需要to_s方法进行显示转换,才能用于连接。注意的是,连接后的字符串会新建一个对象返回。
(2)用<<号进行字符串连接。此操作符连接字符串,是修改左侧字符串,而不新建对象。
(3)用*号表示重复左侧字符串,
(4)字符串截取
通过[]来访问字符串中的子字符串。字符串可以作为字符数组来看待。如果索引为负数,则从右向左取字符。(在1.8和1.9中通过[]访问返回的不同,1.9中取的更符合习惯)
通过[]索引访问进行赋值操作,可以替换字符。
通过[]中两个值进行访问,可以截取子字符串
(5)通过range截取子字符串。
通过range表示的两个都是索引,这个区别于[]中以逗号分隔的一个用于索引,另一个用于长度。
[..]或[…]
其中两个点的为包含区间。
(5)通过索引字符串,来判断包含关系
通过[“字符串']来判断是否包含此子字符串
(三)字符类型

字符类型通过?+字符来定义。

(四)数组

数组字面量通过[]中以逗号分隔定义,且支持range定义。同时,数组字面量引用同%q,%Q类似的%w,%W分界符。中间以空格分隔。
(1)数组通过[]索引访问
同字符串相似,数据通过索引进行访问。如果有两个数值,则一个表示索引,另一个表示元素个数
(2)通过赋值操作插入、删除、替换元素
(3)通过+,-号进行合并和删除元素,且集合做为新集合出现
(4)通过<<号向原数据追加元素
(5)通过*号重复数组元素
(6)通过|和&符号做并集和交集操作(注意顺序)
(五)哈希类型
哈希字面量由逗号分隔的kv对来定义,被包括在花括号之间,kv对以=>来定义

复制代码 代码如下:

#hash
h1={"a1"=>1,"a2"=>2}
h2={:a1=>3,:a2=>4}
h3={a1:5,a2:6}
 
puts h1["a1"]
puts h2[:a1]
puts h3[:a1]

(六)范围类型
通过..或…符号定义范围类型,它有顺序性。
(七)true,false,nil
比较nil值,可以通过:
Ojb==nil或
Obj.nil?
(八)对象标识、对象的类、类型
对象标识在1.9中可以通过:
__id__得到,或object_id
 
对象的类:

复制代码 代码如下:

Obj.class==String或
Obj.instance_of? String
 
x1="ok"
puts x1.class==String
puts x1.instance_of?String

判断是不是一种类型的实例也可通过:is_a?或===

复制代码 代码如下:

x1="ok"

puts x1.is_a?String
puts x1===String

(九)对象冻结、污染
通过freeze冻结对象,被冻结对象将不可变(所有内部状态都不可变)。如果类被冻结,则类不能添加方法。
通过taint污染对象,被污染的对象会成为污染源(源自它的对象都是被污染的)。通过untaint进行解除污染。

时间: 2024-10-10 20:01:19

Ruby基础知识之数据类型_ruby专题的相关文章

Ruby基础知识之方法、代码段_ruby专题

Ruby中的方法是一个有名称的代码块,是与一个或多个对象关联的参数化的代码.调用时须给出方法名,接收者(所在对象),参数值,且最后一个表达式的值做为返回值.与Ruby方法相似的是代码块,它没有名字,且调用时只通过迭代器或被间接调用.  (一)方法 (1)定义方法 定义方法就是 复制代码 代码如下: def 方法名(参数列表) 方法体 end 最后一个表达式做为返回值返回,如果有值,则返回:无值则返回nil.可以省略return. 在类中定义的方法为实例方法,实例方法可以在类的实例对象上使用.如果

Ruby基础知识之类_ruby专题

创建类: class后跟类名,其中类名的首字母必须要大写.实例化时,通过new方法实例化.在c#中有构造器,构造器与类同名.在ruby中,构造器为initialize方法.当通过new方法实例化一个类对象后,会自动调用initialize方法,把new中的参数传递给initialize方法进行初始化.在c#中的域,在ruby中称为实例变量,定义时前边加@前缀,表示是一个实例变量. 复制代码 代码如下: class Customer     def initialize(name,age)    

Ruby基础知识之基本流程控制_ruby专题

(一)条件判断条件判断为基本式: 复制代码 代码如下: if expression        code end 表达式如果不是false或nil,则可执行code部分,所以对于else来说,如果为false或nil,则else下的代码是要执行的.要注意的是表达式与执行代码之间要有分界符:例如换行或分号或是then关键字. 多条件分支情况下,除了可以用else if之外,可以用省略式:elsif 复制代码 代码如下: if expression1        code1 elsif expr

在Docker中自动化部署Ruby on Rails的教程_ruby专题

基本的Rails应用程序 现在让我们启动一个基本的Rails应用.为了更好的展示,我使用Ruby 2.2.0和Rails 4.1.1 在终端运行: $ rvm use 2.2.0 $ rails new && cd docker-test 创建一个基本的控制器: $ rails g controller welcome index --,然后编辑 routes.rb ,以便让该项目的根指向我们新创建的welcome#index方法: root 'welcome#index' 在终端运行 r

深入理解Ruby中的block概念_ruby专题

Ruby 里的 block一般翻译成代码块,block 刚开始看上去有点奇怪,因为很多语言里面没有这样的东西.事实上它还不错.First-class function and Higher-order function First-class function 和 Higher-order function 是函数式编程语言里面的概念,听起来好像很高端的样子,其实很很简单的. First-class functions 是指在某些语言里,函数是一等公民,可以把函数当做参数传递, 可以返回一个函数

win7安装ruby on rails开发环境_ruby专题

前言 看到很多文章都说ruby环境在windows上是非常难搭建,会出现各种各样的怪问题,所以都推荐到linux和mac上安装开发.但是我按照教程搭了下,问题也不算太多.总过大概花费了2个半小时左右就完成了.所以大家不要被吓尿了,下面就把安装的步骤及具体的版本记录了一下供大家参考. 安装步骤:    开发机环境:我使用的开发机:win7 旗舰版 - 64位 (cpu是i5). 1 安装 rubyinstaller-2.0.0-p481.exe    1 选择安装目录:(如:D:\server\R

Ruby多线程编程初步入门_ruby专题

 传统程序有一个单独的线程执行,包含该程序的语句或指令顺序执行直到程序终止. 一个多线程的程序有多个线程的执行.在每个线程是按顺序执行的,但是在多核CPU机器上线程可能并行地执行.例如,通常情况下在单一CPU的机器,多个线程实际上不是并行执行的,而是模拟并行交叉的线程的执行. Ruby的可以使用 Thread 类很容易地编写多线程程序. Ruby线程是一个轻量级的和高效的在代码中实现并行性.创建Ruby线程: 要启动一个新线程,关联一个块通过调用Thread.new.将创建一个新的线程执行的代码

详解Ruby中的方法概念_ruby专题

 Ruby方法跟其他编程语言中的函数非常相似, Ruby方法用于捆绑到一个单元中的一个或多个重复的语句. 方法名称应以小写字母开始.如果一个方法的名称以大写字母开始,Ruby可能会认为这是一个常数,因此可以正确解析调用. 方法应该定义Ruby的之前调用他们,否则会引发一个异常未定义的方法调用. 语法: def method_name [( [arg [= default]]...[, * arg [, &expr ]])] expr.. end 所以,可以定义一个简单的方法如下: def met

详解Ruby当中的算数运算_ruby专题

 Ruby支持一系列丰富的运算符的一个现代化的语言.大多数运算符实际上是方法调用.例如,a + b的被解释为a, +(b)变量引用的对象的方法被称为一个用b作为它的参数. 对于每个运算符 (+ - * / % ** & | ^ << >> && ||), 有相应的赋值运算符缩写形式 (+= -= 等)Ruby算术运算符: 假设变量a=10,变量b=20:  Ruby比较操作符: 假设变量a=10,变量b=20:  Ruby赋值运算符: 假设变量a=10,变量