`
酷的飞上天空
  • 浏览: 521760 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

ruby的基本类型

阅读更多

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]
 

 

 

分享到:
评论
2 楼 lliiqiang 2014-09-02  
分析很难,好的规则持久,靠某个方法条件局限不能证明长久
1 楼 lliiqiang 2014-09-02  
当事件发生的时候,事件多个细节证明因素要被单独分析,这样能够分析每一个包含的信息,当然假设性分析需要严密思维,假设性未必正确,但是也未必是带来危害的,有的是无亏本的.
总之科学是最客观的.

相关推荐

    Ruby 数据类型.pdf

    数字类型是Ruby中最基本的数据类型之一,它分为整数(Integer)和浮点数(Float)两大类。Ruby中的数字类型支持常见的数学运算,如加减乘除等,并且可以进行比较操作。 - **整数(Integer)**:表示没有小数部分的...

    ruby基本数据类型简明介绍

    概括、ruby中的基本数据类型都是类类型,只不过为了书写和阅读的方便,为基本数据类型提供了较为简洁的书写方式而已。 一、数值类型 整数支持二进制,八进制,十进制,十六进制,根据整数的大小动态决定整数是Fixnum...

    Ruby 基本语言介绍

    ### Ruby 基本语言介绍 #### 一、Ruby 语言概述 Ruby 是一种简洁、高效且具有强大功能的编程语言。它最初由日本程序员松本行弘(Yukihiro Matsumoto)于1995年设计并开发。Ruby 的设计理念强调程序员的生产力和...

    Ruby编程Ruby Programming

    - **面向对象**:几乎所有事物在Ruby中都是对象,包括数字、字符串等基本数据类型。 - **动态性**:Ruby支持运行时修改代码结构,允许开发者在程序运行过程中改变类和方法的行为。 - **元编程能力**:Ruby提供了一种...

    ruby(前途大好的ruby+rains)

    1. **面向对象**:Ruby是完全的面向对象语言,每一个数据都是对象,包括基本类型如整数、字符串和布尔值。所有操作都是通过消息传递给对象来完成的。 2. **动态性**:Ruby支持动态类型,变量的类型在运行时确定,...

    Ruby 教程 The Book of Ruby

    ### Ruby 教程《The Book of Ruby》知识点总结 #### 一、书籍基本信息 - **书名**:《The Book of Ruby》 ...通过本书的学习,不仅可以掌握Ruby编程的基本技能,还能深入了解其背后的编程思想和设计理念。

    ruby官方chm文档

    《ruby23-core.chm》文档聚焦于Ruby的核心库,这是Ruby语言的基础部分,包括基本数据类型、控制结构、异常处理、类和模块系统等内容。例如,它会详细介绍如何创建和使用类、继承机制、模块混入、块和 Proc 对象,...

    Ruby-Ruby的面向对象的枚举

    在Ruby编程语言中,"面向对象的枚举"是一个重要的概念,它结合了面向对象编程的灵活性和枚举类型的效率。Ruby的枚举通常指的是枚举类(Enum Class),这是一种自定义枚举类型的方法,允许我们创建具有特定行为的枚举...

    Ruby入门教程中文PDF 附实例

    Ruby还是一个面向对象的语言,每个值都是一个对象,包括基本类型如数字和字符串。类和对象是Ruby的核心概念,你可以自定义类并创建实例。例如,创建一个名为`Person`的类并初始化姓名: ```ruby class Person def ...

    Ruby教程 脚本语言

    在Ruby中,一切皆为对象,包括基本的数据类型如数字、字符串和布尔值。这使得Ruby在面向对象编程方面具有很高的灵活性,程序员可以通过定义类和模块来构建复杂的软件结构。Ruby的语法简洁,易于阅读,强调代码的...

    Ruby 类型算法集合包

    Ruby Standard Library: Ruby 的标准库中包含了一些基本的算法,比如排序算法(sort 方法)、搜索算法(find 方法)等。 RubyGems: RubyGems 是 Ruby 的包管理器,它允许你安装和使用第三方库。许多算法库可以通过 ...

    笨办法学ruby_笨办法学ruby_ruby_bravevk4_

    这本书旨在通过大量的实践练习帮助读者快速掌握Ruby的基本概念和语法。 在Ruby的世界里,一切皆对象,这是它的一个核心特性。Ruby的面向对象设计允许开发者以更自然的方式表达代码,使得程序更具表达力。书中的章节...

    ruby中英文api

    "The Ruby Way.chm"则可能是《The Ruby Way》一书的电子版,这是一本深入介绍Ruby编程实践的书籍,它不仅讲解了Ruby的基本语法,还分享了编写高效、简洁Ruby代码的技巧。书中可能包含了大量的示例代码和实践案例,...

    ruby中文文档(ruby入门级别教程)

    - **面向对象**:Ruby的万物皆对象,所有的数据都是对象,连基本类型也不例外,这使得面向对象编程更加自然。 - **块和闭包**:Ruby中的块和闭包提供了强大的代码组织和复用能力,是实现高阶编程的关键。 - **元编程...

    .一步一步学RUBY

    - **一切皆对象**:在Ruby中,从基本数据类型到布尔值,乃至`nil`,所有东西都被视为对象。方法调用参数也是可选的,这体现了Ruby的灵活性和面向对象的哲学。 - **语句块与迭代器**:Ruby支持简洁的循环语法,如`...

Global site tag (gtag.js) - Google Analytics