ruby的基本类型包括数字,字符串,数组,符号,散了表,区间和正则表达式,这些基本类型都是以类的形式定义的
数字:
ruby中的数字分为整形(Integer)、浮点数(Float)、复数(Complex)这三种。其中整数又分为定整数(Fixnum)和大整数(Bignum)。
Integer
整数的书写例子:
#书写整数时,可根据需要在数字之间任意加入下划线而不会影响数字的值
a=123_456_789
puts a #=>123456789
puts 0b100100 #二进制 =>36
puts 0123 #八进制 =>83
puts 0xa0 #十六进制 =>160
运算方法为
+,-,*,/ 加减乘除
% 取模运算 4%3=>1
| , &, ^ 按位与,按位或,按位异或
<<,>> 左右移位运算
<=> 比较整数大小,前者大于后者返回1,相等返回0,小于返回-1
常用方法
abs 返回数字的绝对值
chr 返回数字对应的ASCII编码对应的符号
times 循环整数此说的迭代方法 例:3.times{ |i| puts i }
downto 从大到小进行迭代,使用方法如: 5.downto(1){ |i| puts i } 输出: 5 4 3 2 1
upto 从小到大进行迭代,使用方法如: 2.upto(5){ |i| puts i } 输出: 2 3 4 5
to_s 将正说变为字符串类型
Float
浮点数的运算与整数类似,但有几个特殊的方法
ceil 返回比浮点数大的最小整数
floor 返回比浮点数小的最大整数
round 对浮点数四舍五入为一个整数
to_i 返回截取掉小数点后面数字后的整数
Ruby内置有一个Math的模块,包含常见的数字相关运算的支持。
字符串String
ruby中通常使用单引号或者双引号包含 例如:
str = "this is a string"
str = 'this is a string
还可以使用%,%q,%Q表示法 例如:
puts %{test\t,"this is a test"}
puts %q{test\t,this ia a "test"}
puts %Q{test\t,this is a 'test'}
输出
test ,"this is a test"
test\t,this ia a "test"
test ,this is a 'test'
可以看出,%q是不支持转义字符的
ruby还提供了一个称为here文档的字符串标示方法,适合显示多行的大段文字 例如:
str = <<here
输入多行文本
输入多行文本
输入多行文本
输入多行文本
here
输出
输入多行文本
输入多行文本
输入多行文本
输入多行文本
字符串的基本操作
puts "abcdfe"[0] #输出第0位的字符
puts "abcdfe"[0,2] #输出第0为到第0+2-1位的字符串
puts "abcdfe"[0..2] #输出第0位到第2位的字符串
puts "abcdfe"[0]="2" #将第0位的字符替换为2
puts "abcdfe"*2 #返回原来字符串重复2次后的新字符串
puts "abcdfe"+"hello" #将原来的字符串后面加上hello
puts "abcdfe"<<"hello" #同上
输出:
a
ab
abc
2
abcdfeabcdfe
abcdfehello
abcdfehello
字符串的常用方法
str = "abcdef"
str.length
str.size
str.concat(obj) #追加字符串,如果obj为数字并且在0-255之间则运算前自动转换为一个相应的字符
str.capitalize #将字符串首字母大写,其他字符小写
str.delete("abf")
str.each_byte { |fixnum| puts fixnum} #对字符串的每个字节进行迭代
str.each_char { |cstr| puts cstr } #对字符进行迭代
str.each_line { |substr| } #对每行进行迭代
str.strip #去除字符串首尾的非可见字符,返回新字符串.非破坏形方法
str.downcase #字符串转换为小写
str.upcase #字符串转换为大写
str.include?(string) #如果字符串包含string则返回true,否则返回false
str.index(string) #返回字符串string首次出现的位置,rindex方法从后开始检索
str.reverse #将字符串顺序反转
str.split(pattern) #基于分隔符pattern将字符串str分割成若干子字符串,以数组形式返回
str.scan(pattern) #检索出str中所有匹配pattern的子字符串,并以数组的形式返回
符号Symbo
l
符号是Symbol类的实例,通常情况下,使用冒号加上一个标示符即可创建一个符号。
:"a symbol"
:"()22"
符号不同于字符串的地方是:相同标示符在任何地方均引用的是一个相同的实例。而相同的字符串则可能是不同的对象
符号的优点是内存消耗较少,适合于需要保证名称和变量一一对应的情况。实际使用中,如枚举值,关键字都会选择符号
可枚举模块的一些方法
#enum.all?{|obj| block} 判断是否集合中所有元素都满足某个条件
[1,2,3,4].all? { |i| i>2 } #返回false
#enum.any?{|obj| block} 判断是否集合中有任意一个元素满足条件
[1,2,3,4].any? { |i| i>3 } #true
#enum.collect{|obj| block} 集合中的每个元素调用block的结果,以数组的形式返回
[1,2,3,4].collect { |i| i+1 } #[2,3,4,5]
#enum.each_with_index{|obj,i|block} obj为集合中的元素,i为该元素的下标
[0,1,2,3].each_with_index { |obj,i|puts "#{obj}--#{i}" }
#enum.find(ifnone=nik){|ojb| block} 返回第一个条件成立的元素
[0,1,2,3].find { |obj| obj=3 }
#enum.find_all{|obj| block} 找出所有符合条件的元素,返回一个数组
[0,1,2,3].find_all { |obj| obj>1 } #[2,3]
#enum.include?(obj) 检测集合中是否包含obj
[0,1,2,3].include?(1) #true
#enum.inject(initial=nil){|memo,obj|block} 每一步memo参数都会被设置为block的结果,传入下一步运算
[1,2,3,4].inject { |memo,obj| memo+obj } #返回10
#enum.partition{|obj| block} 按照某个条件分割为俩个数组并返回
[1,2,3,4].partition { |i| i>2 } #返回[[1,2],[3,4]]
#enum.max 返回集合中最大的元素
[1,2,3,4].max #4
#enum.max{|a,b| block} 自定义比较内容
puts [1,2,3,4].max { |a,b| a<=>b }
#enum.min和enum.min{|a,b| block} 参考如上
#enum.sort,enum.sort{|a,b| block} 给集合排序 默认是按照小>大的顺序
[4,3,2,1].sort #[1,2,3,4]
#enum.sort_by{|obj| block}根据某种规则对集合中的元素进行排序
["str","strstr","strstrstr"].sort_by { |obj| obj.length }
关于Array
创建数组对象最标准的方式是:a = Array.new
或者 a = Array.new(5) 创建包含5个nil元素的数组
或者a = Array.new(5,1) 创建包含5个1的数组
最简单的方式是a = [] 或者 a = [1,1,1,1]
或者使用%w,可以创建不包含空格的数组
如:%w(tt ww kk ss) 返回 ["tt","ww","kk","ss"]
Array还具有并行赋值的能力,把等号右边的元素依次赋值给左边
如:
a,b,c = ["string",20,[1,2]]
puts "#{a} #{b} #{c}"
输出
string 20 [1, 2]
分享到:
相关推荐
数字类型是Ruby中最基本的数据类型之一,它分为整数(Integer)和浮点数(Float)两大类。Ruby中的数字类型支持常见的数学运算,如加减乘除等,并且可以进行比较操作。 - **整数(Integer)**:表示没有小数部分的...
概括、ruby中的基本数据类型都是类类型,只不过为了书写和阅读的方便,为基本数据类型提供了较为简洁的书写方式而已。 一、数值类型 整数支持二进制,八进制,十进制,十六进制,根据整数的大小动态决定整数是Fixnum...
### Ruby 基本语言介绍 #### 一、Ruby 语言概述 Ruby 是一种简洁、高效且具有强大功能的编程语言。它最初由日本程序员松本行弘(Yukihiro Matsumoto)于1995年设计并开发。Ruby 的设计理念强调程序员的生产力和...
- **面向对象**:几乎所有事物在Ruby中都是对象,包括数字、字符串等基本数据类型。 - **动态性**:Ruby支持运行时修改代码结构,允许开发者在程序运行过程中改变类和方法的行为。 - **元编程能力**:Ruby提供了一种...
1. **面向对象**:Ruby是完全的面向对象语言,每一个数据都是对象,包括基本类型如整数、字符串和布尔值。所有操作都是通过消息传递给对象来完成的。 2. **动态性**:Ruby支持动态类型,变量的类型在运行时确定,...
### Ruby 教程《The Book of Ruby》知识点总结 #### 一、书籍基本信息 - **书名**:《The Book of Ruby》 ...通过本书的学习,不仅可以掌握Ruby编程的基本技能,还能深入了解其背后的编程思想和设计理念。
《ruby23-core.chm》文档聚焦于Ruby的核心库,这是Ruby语言的基础部分,包括基本数据类型、控制结构、异常处理、类和模块系统等内容。例如,它会详细介绍如何创建和使用类、继承机制、模块混入、块和 Proc 对象,...
在Ruby编程语言中,"面向对象的枚举"是一个重要的概念,它结合了面向对象编程的灵活性和枚举类型的效率。Ruby的枚举通常指的是枚举类(Enum Class),这是一种自定义枚举类型的方法,允许我们创建具有特定行为的枚举...
Ruby还是一个面向对象的语言,每个值都是一个对象,包括基本类型如数字和字符串。类和对象是Ruby的核心概念,你可以自定义类并创建实例。例如,创建一个名为`Person`的类并初始化姓名: ```ruby class Person def ...
在Ruby中,一切皆为对象,包括基本的数据类型如数字、字符串和布尔值。这使得Ruby在面向对象编程方面具有很高的灵活性,程序员可以通过定义类和模块来构建复杂的软件结构。Ruby的语法简洁,易于阅读,强调代码的...
Ruby Standard Library: Ruby 的标准库中包含了一些基本的算法,比如排序算法(sort 方法)、搜索算法(find 方法)等。 RubyGems: RubyGems 是 Ruby 的包管理器,它允许你安装和使用第三方库。许多算法库可以通过 ...
这本书旨在通过大量的实践练习帮助读者快速掌握Ruby的基本概念和语法。 在Ruby的世界里,一切皆对象,这是它的一个核心特性。Ruby的面向对象设计允许开发者以更自然的方式表达代码,使得程序更具表达力。书中的章节...
"The Ruby Way.chm"则可能是《The Ruby Way》一书的电子版,这是一本深入介绍Ruby编程实践的书籍,它不仅讲解了Ruby的基本语法,还分享了编写高效、简洁Ruby代码的技巧。书中可能包含了大量的示例代码和实践案例,...
- **面向对象**:Ruby的万物皆对象,所有的数据都是对象,连基本类型也不例外,这使得面向对象编程更加自然。 - **块和闭包**:Ruby中的块和闭包提供了强大的代码组织和复用能力,是实现高阶编程的关键。 - **元编程...
- **一切皆对象**:在Ruby中,从基本数据类型到布尔值,乃至`nil`,所有东西都被视为对象。方法调用参数也是可选的,这体现了Ruby的灵活性和面向对象的哲学。 - **语句块与迭代器**:Ruby支持简洁的循环语法,如`...