Ruby数据类型
数字类型
- 书写整数时,可以根据需要在整数之间任意加入下划线而不会影响数字的值
a=123_45_78puts a # => 12345678 - to_i 截掉小数点之后的数字取整
- 内置Math模块 Math::PI ,Math::exp(10) 计算e的10次幂
2**22的2次方 ,a=5a**=2等价a=a**2
字符类型
输出长字符串非常自由,%Q会解析转义
s = %q{不用带\n引号?} s2 = %Q{不用带\n引号?} 不用带\n引号? 不用带 引号?- 嵌入字符
name = "Finley" ;color = "blue"puts "Hi #{name},you like #{color}" - 字符方法
str = "abcde"str.delete("d")与str.delete!("d")区别,后者作用于本身
符号类型
- 字符串和符号对象可以通过 tos 和 tosym 来进行相互转化
区间(范围)
- a = 1..5 与 b = 1...5 区别,a包含5,b不包含5
puts a === 5 true
puts b === 5 false
a.max 5
b.max 4
- 区间转数组
(1..5).to_a=> [1,2,3,4,5] - 区间的迭代
zimu = "A".."J"
zimu.each do |i|
puts i.to_s
end
数组
- 专门创建数组的方式 "%w",省去了加很多引号的时间
%w(one two three four)=> ["one","two","three","four"] - 含有5个1的数组
a=Array.new(5,1)arr = [1,2,3,4,5,6,7,8] - 删除指定索引位置的元素 arr.delete_at(2)
- 删除指定的元素,一次只能删除一个元素? arr.delete(3)
arr = [1, 2, 3, 4, 5]
arr.each { |a| print a -= 10, " " }
# prints: -9 -8 -7 -6 -5
- map 产生新的数组,如果map!直接作用于原数组 puts arr.map{ |a| a**2 } puts arr
散列( 哈希)
s = Hash[1=>'a',2=>'b']等价于s = {1=>"a", 2=>"b"}- 遍历哈希
ar = {"name"=>"jack","age"=>18,"color"=>"red"}
for key,value in ar do
puts key + '--' + value.to_s
end
- 使用迭代器
ar.each do |name|
puts name[0].to_s + '--' + name[1].to_s
end
#另一种写法
ar.each do |v,k|
puts v.to_s + '--' + k.to_s
end
运算符
puts 5<=>8左边对象小返回-1,相等0,否则1===当普通对象处于运算符的左边时,该运算符与“==”功能相同; 但左边的对象是一个 Range 对象,且右边对象包含在该 Range 内时,返回 true,否则返回 false (1..12)===8 返回 true
并行赋值和嵌套赋值
- 并行赋值
a,b = "我是A","我是B"
puts a
a,b = b,a
puts a #变成了 "我是B"
语句
- 表达式后跟if后while条件
puts "good" if s >= 10 - unless 与if相反,条件为true执行else后面的语句
unless (条件) then
代码块1
else
代码块2
end
- case,每个条件后面都有break效果,即score=1只会输出"悲催了"
score = 2
case score
when 0,1,2
puts "悲催了"
when 0...60
puts "不及格!"
when 60...80
puts "良"
when 80...100
puts "优"
else
puts "超出范围"
end
- break 跳出整个循环
# loop会无限次循环,必须使用break跳出循环
i = 0;
loop{
i += 1
if (i>=3) break
# break
}
- next 进入下一个循环,redo不会检查循环条件是否成立,就执行下一个循环
# encoding:utf-8
i = 1
while(i<=5) do
if (i == 5)
i+=1
#redo #多输出6
next
end
puts "当前i:" + i.to_s
i+=1
end
Ruby数据类型的更多相关文章
- 雷林鹏分享:Ruby 数据类型
Ruby 数据类型 本章节我们将为大家介绍 Ruby 的基本数据类型. Ruby支持的数据类型包括基本的Number.String.Ranges.Symbols,以及true.false和nil这几个 ...
- Ruby 数据类型
Ruby 数据类型 本章节我们将为大家介绍 Ruby 的基本数据类型. Ruby支持的数据类型包括基本的Number.String.Ranges.Symbols,以及true.false和nil这几个 ...
- ruby 数据类型Number
Ruby支持的数据类型包括基本的Number.String.Ranges.Symbols,以及true.false和nil这几个特殊值,同时还有两种重要的数据结构——Array和Hash 数值类型(N ...
- ruby 数据类型Symbol
一.符号创建 符号是Symbol类的实例,使用冒号加一个标识符即可创建符号 :a :"This is a symno" 二.符号字符串相互转换 p :symbol.to_s #=& ...
- ruby 数据类型Range
范围(Range)无处不在:a 到 z. 0 到 9.等等.Ruby 支持范围,并允许我们以不同的方式使用范围: 作为序列的范围 作为条件的范围 作为间隔的范围 作为序列的范围 (1..5) #==& ...
- ruby 数据类型String
一.字符串创建 单引号包含,不支持转义符和内嵌表达式#{}(插值符) str = 'hello world!' 双引号包含 str = "hello world!" 使用%,%Q, ...
- Ruby入门教程和技巧
转自:http://blog.csdn.net/cqfz123/article/details/1349050 Ruby真的比Java更好? Ruby On Rails 创始人:对Java 说再见 ...
- 《Ruby语言入门教程v1.0》学习笔记-01
<Ruby语言入门教程v1.0> 编著:张开川 邮箱:kaichuan_zhang@126.com 想要学习ruby是因为公司的自动化测试使用到了ruby语言,但是公司关于ruby只给了一 ...
- Ruby新手教程和技巧
Ruby真的比Java更好? Ruby On Rails 创始人:对Java 说再见 这两周以来环绕Java发生的两件大事:EclipseCon 和TheServerSide Java Sympo ...
随机推荐
- vector erase
vector::erase 从指定容器删除指定的元素 两个重载: iterator erase (iterator position);删除指定位置position的元素,并返回删除元素的下一个元素的 ...
- php模板引擎的原理与简单实例
模板引擎其实就是将一个带有自定义标签的字符串,通过相应的规则解析,返回php可以解析的字符串,这其中正则的运用是必不可少的,所以要有一定的正则基础.总体思想,引入按规则写好的模板,传递给标签解析类(_ ...
- c#类中字段和方法中变量的声明问题
字段和局部变量的作用域冲突 某些情况下可以区分名称相同,作用域相同的两个标识符.原因是C#在变量之间有一个基本的区分,它把在类级别声明的变量看作 字段,而把在方法中声明的变量看作局部变量. class ...
- javascript-数字转罗马数字
阿拉伯数字与罗马数字转换 罗马数字表示 XXI, 21 个位数举例I, 1 ]II, 2] III, 3] IV, 4 ]V, 5 ]VI, 6] VII, 7] VIII,8 ]IX, 9 ·十位数 ...
- Tomcat的批处理
Tomcat的启动和关闭 来源 本文摘抄自 <Tomcat内核设计剖析> 一书. Tomcat的批处理 Tomcat的启动.关闭批处理脚本在/bin目录下. startup.bat 第 ...
- VS进行调试时IIS Express显示Access Define-坑爹的腾讯TGP助手
今天在家使用VS进行调试的时候发现IIS Express死活启动不了,改用IIS也是不行,尝试了网上所说的所有办法,改了各种权限,找了各种注册表,最终未果,然后我想起之前被腾讯坑过的那次:http:/ ...
- 第20章 USART—串口通讯
本章参考资料:<STM32F76xxx参考手册>USART章节. 学习本章时,配合<STM32F76xxx参考手册>USART章节一起阅读,效果会更佳,特别是涉及到寄存器说明的 ...
- 从C语言的volatile关键字,了解C#的volatile机制(转载)
C#中有一个关键字volatile,一直不太明白到底什么时候才用它,只知道在多线程操作同一个变量的时候要使用volatile关键字,下面看到了一篇C语言关于volatile关键字的介绍,写的很不错,其 ...
- flask模板语言,装饰器,路由及配置
1.模板语言jinja2 Flask中默认的模板语言是Jinja2 1.0 模板传参 from flask import Flask,render_template app = Flask(__nam ...
- Swift:一个基于.NET Core的分布式批处理框架
Swift是什么 从文章的标题可知:此Swift非Apple那个Swift,只是考虑这个词的含义比较适合. Swift是一个基于.NET Core的分布式批处理框架,支持将作业分割后分发到多台服务器并 ...