数字类型

  • 书写整数时,可以根据需要在整数之间任意加入下划线而不会影响数字的值 a=123_45_78 puts a # => 12345678
  • to_i 截掉小数点之后的数字取整
  • 内置Math模块 Math::PI ,Math::exp(10) 计算e的10次幂
  • 2**2 2的2次方 , a=5 a**=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&lt;=5) do
if (i == 5)
i+=1
#redo #多输出6
next
end
puts "当前i:" + i.to_s
i+=1
end

Ruby数据类型的更多相关文章

  1. 雷林鹏分享:Ruby 数据类型

    Ruby 数据类型 本章节我们将为大家介绍 Ruby 的基本数据类型. Ruby支持的数据类型包括基本的Number.String.Ranges.Symbols,以及true.false和nil这几个 ...

  2. Ruby 数据类型

    Ruby 数据类型 本章节我们将为大家介绍 Ruby 的基本数据类型. Ruby支持的数据类型包括基本的Number.String.Ranges.Symbols,以及true.false和nil这几个 ...

  3. ruby 数据类型Number

    Ruby支持的数据类型包括基本的Number.String.Ranges.Symbols,以及true.false和nil这几个特殊值,同时还有两种重要的数据结构——Array和Hash 数值类型(N ...

  4. ruby 数据类型Symbol

    一.符号创建 符号是Symbol类的实例,使用冒号加一个标识符即可创建符号 :a :"This is a symno" 二.符号字符串相互转换 p :symbol.to_s #=& ...

  5. ruby 数据类型Range

    范围(Range)无处不在:a 到 z. 0 到 9.等等.Ruby 支持范围,并允许我们以不同的方式使用范围: 作为序列的范围 作为条件的范围 作为间隔的范围 作为序列的范围 (1..5) #==& ...

  6. ruby 数据类型String

    一.字符串创建 单引号包含,不支持转义符和内嵌表达式#{}(插值符) str = 'hello world!' 双引号包含 str = "hello world!" 使用%,%Q, ...

  7. Ruby入门教程和技巧

    转自:http://blog.csdn.net/cqfz123/article/details/1349050   Ruby真的比Java更好? Ruby On Rails 创始人:对Java 说再见 ...

  8. 《Ruby语言入门教程v1.0》学习笔记-01

    <Ruby语言入门教程v1.0> 编著:张开川 邮箱:kaichuan_zhang@126.com 想要学习ruby是因为公司的自动化测试使用到了ruby语言,但是公司关于ruby只给了一 ...

  9. Ruby新手教程和技巧

      Ruby真的比Java更好? Ruby On Rails 创始人:对Java 说再见 这两周以来环绕Java发生的两件大事:EclipseCon 和TheServerSide Java Sympo ...

随机推荐

  1. CALayer & bitmap Content

    Working with High-Resolution Images Layers do not have any inherent knowledge of the resolution of t ...

  2. CF13C Sequence

    嘟嘟嘟 偶然看到的这道题,觉得有点意思,就做了. 首先题里说修改后的数列只能出现修改前的数,那么状态之间的转移也就之可能在这些数之间. 令f[i][j]表示第 i 个数改成原序列第 j 小的数时的最小 ...

  3. docker-3-常用命令(下)

    importance 1.启动守护式容器 docker run -d 容器名   使用镜像centos:latest以后台模式启动一个容器 docker run -d centos   问题:然后do ...

  4. 播放WAV文件和系统提示音

  5. Angular.js数据绑定时自动转义html标签及内容

    angularJS在进行数据绑定时默认是以字符串的形式数据,也就是对你数据中的html标签不进行转义照单全收,这样提高了安全性,防止html标签的注入攻击,但有时候需要,特别是从数据库读取带格式的文本 ...

  6. Redis口令设置

    ./redis-cli -h 192.168.128.131 -p 6379 #指定IP和端口启动对应的Redis服务 config set requirepass yourPassword #设置令 ...

  7. [转]MFC子线程更改图像数据后更新主窗口图像显示方法

    程序思路是由外部的输入输出控制卡发出采集图像信号,之后相机采集图像得到图像数据指针,接收图像数据指针创建成图像最后显示到MFC对话框应用程序的Picture Control控件上,同时,为了标定相机位 ...

  8. 作为测试新手,web测试从何开始学起?

    我们先来弄清楚web测试的测试范围,通常web测试包含:功能测试.性能测试.浏览器兼容测试.安全测试以及用户界面测试等.那么,作为一个初级测试员或者实习测试员,最开始的能做的只能是功能测试和用户界面测 ...

  9. 关于ligerui grid 行内编辑 combobox 只能选择的问题

    这个貌似是天然的不支持,修复方案,在ligerGridOrd.js中添加一行代码,如下,跟了一下午的源码,发现在这里的时候,options中只保留了combobox中的一部分属性,所以可能combob ...

  10. react native基本调试技巧

    刚入坑RN,很多小坑都要摸索很久才明白.今天咱们就来填console.log()的坑. 废话不多说,开始讲步骤!! 1.在模拟器中打开 开发者菜单,选择 Debug JS Remotely,会自动在浏 ...