您的位置:首页 > 编程语言 > Ruby

Ruby自学之路 二

2016-03-30 14:49 295 查看

Ruby 数据类型

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

数值类型(Number)

Ruby内置的数值类型分为整数对象(Integer)和浮点小数对象(Float)

1、整型(Integer)

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

可以在整数前使用一个可选的前导符号,一个可选的基础指标(0 对应 octal,0x 对应 hex,0b 对应 binary),后跟一串数字。下划线字符在数字字符串中被忽略。

实例:

puts 123                  # Fixnum 十进制
puts 1_234                # Fixnum 带有下划线的十进制
puts -500                 # 负的 Fixnum
p 0377                 # 八进制
p 0xff                 # 十六进制
p 0b1011               # 二进制
p "a".ord              # "a" 的字符编码
p ?\n                  # 换行符(0x0a)的编码
p 12345678901234567890 # Bignum

# Result:
# 123
# 1234
# -500
# 255
# 255
# 11
# 97
# "\n"
# 12345678901234567890
# 1000000


2、浮点型(Float)

Ruby 支持浮点数。它们是带有小数的数字。浮点数是类 Float 的对象。

p 123.4                # 浮点值
p 1.0e6                # 科学记数法
p 4E20                 # 指数前的符号,不是必需的
p 4e+20

#Result:
# 123.4
# 1000000.0
# 4.0e+20
# 4.0e+20


字符串类型(String)

Ruby 字符串简单地说是一个 8 位字节序列,它们是类 String 的对象。

双引号标记的字符串允许替换和使用反斜线符号,单引号标记的字符串不允许替换,且只允许使用 \\ 和 \' 两个反斜线符号。

实例:

puts 'escape using "\\"';
puts 'That\'s right';

#Result:
# escape using "\"
# That's right


可以使用序列 #{ expr } 替换任意 Ruby 表达式的值为一个字符串。在这里,expr 可以是任意的 Ruby 表达式。

实例:

puts "Multiplication Value : #{24*60*60}";
name="Ruby"
puts name
puts "#{name+",ok"}"

#Result:
# Multiplication Value : 86400
# Ruby
# Ruby,ok


数组

数组字面量通过[]中以逗号分隔定义,且支持range定义。

(1)数组通过[]索引访问

(2)通过赋值操作插入、删除、替换元素

(3)通过+,-号进行合并和删除元素,且集合做为新集合出现

(4)通过<<号向原数据追加元素

(5)通过*号重复数组元素

(6)通过|和&符号做并集和交集操作(注意顺序)

实例:

ary = [ "fred", 10, 3.14, "This is a string", "last element", ]
ary.each do |i|
puts i
end

#Result:
# fred
# 10
# 3.14
# This is a string
# last element


有关数组的详细学习会在后续说明。

哈希类型

Ruby 哈希是在大括号内放置一系列键/值对,键和值之间使用逗号和序列 => 分隔。尾部的逗号会被忽略。

实例:

hsh = colors = { "red" => 0xf00, "green" => 0x0f0, "blue" => 0x00f }
hsh.each do |key, value|
puts "#{key} is #{value}"
end

#Result:
# red is 3840
# green is 240
# blue is 15


范围类型

一个范围表示一个区间。

范围是通过设置一个开始值和一个结束值来表示。范围可使用 s..e 和 s...e 来构造,或者通过 Range.new 来构造。

使用 .. 构造的范围从开始值运行到结束值(包含结束值)。使用 ... 构造的范围从开始值运行到结束值(不包含结束值)。当作为一个迭代器使用时,范围会返回序列中的每个值。

范围 (1..5) 意味着它包含值 1, 2, 3, 4, 5,范围 (1...5) 意味着它包含值 1, 2, 3, 4 。

(10..15).each do |n|
print n, ' '
end

#Result:
# 10 11 12 13 14 15
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: