Ruby 数据类型

Ruby 数据类型

java 字节 Ruby 字节 mysql 字节
byte 1
short 2
int 4 Integer->fixnum(普通整数) <=4 tinyint 1
Integer->bignum(大整数) >4 smallint 2
mediumint 3
int/integer 4
bigint 8
long 8
float 4 float float 4
rational(有理数)
complex(无理数)
double 8 double 8
decimal
boolean 1(位) true / false 伪变量
char 2
数组 数组
对象 对象
null nil null
哈希类型
范围类型
字符串 字符串 char
varcha
binary
varbinary
tinyblob
blob
mediumblob
longblob
tinytext
text
medinutext
longtext

数值类型(Number)

整型(Integer)
浮点型

字符串类型

Ruby 字符串 8 位字节序列 String 类的对象
双引号标记的字符串 单引号标记的字符串 注意
不限 只允许使用 \ 和 ’ 两个反斜线符号
%Q{Ruby 的字符串} %q |Ruby 的字符串| 注:分界符可以是任意一个非字母数字的单字节字符.如:[,{,(,<,!等
#{ expr } 把任意 Ruby 表达式的值替换为一个字符串
字符串中嵌入变量
eg :“你好 #{name1}”
“x 的值为 #{ 1 + 2 }”
字符串内建方法
eg :puts “#{foo}”
myStr = String.new(“THIS IS TEST”)
foo = myStr.downcase

数组

Ruby 数组可存储诸如 String、 Integer、 Fixnum、 Hash、 Symbol 等对象,甚至可以是其他 Array 对象。
Ruby 数组不需要指定大小,当向数组添加元素时,Ruby 数组会自动增长

创建数组
names = Array.new
names = Array.new(20) puts names.size
puts names.length
20
20
names = Array.new(4, “mac”) puts “#{names}” [“mac”, “mac”, “mac”, “mac”]
nums = Array.new(10) { |e| e = e * 2 } puts “#{nums}” [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
nums = Array.[](1, 2, 3, 4,5)
nums = Array[1, 2, 3, 4,5]
digits = Array(0…9) puts “#{digits}” [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

哈希类型

哈希类似于一个数组,只不过它的索引不局限于使用数字
Hash 的索引(或者叫"键")几乎可以是任何对象
Hash 的元素没有特定的顺序。 如果顺序很重要的话就要使用数组了
创建哈希
months = Hash.new 不带默认值的哈希是 nil
months = Hash.new( “month” ) 默认值 puts “#{months[0]}” month
months = Hash.new “month” 默认值
H = Hash[“a” => 100, “b” => 200] puts “#{H[‘a’]}” 100
[1,“jan”] => “January” 可以使用任何的 Ruby 对象作为键或值,
甚至可以使用数组
months = {“1” => “January”, “2” => “February”} keys = months.keys
puts “#{keys}” [“1”, “2”]

范围类型

作为序列的范围

作为序列的范围
(1…5) 1, 2, 3, 4, 5
(1…5) 1, 2, 3, 4
(‘a’…‘d’) ‘a’, ‘b’, ‘c’, ‘d’
range1 = (1…10).to_a puts “#{range1}” [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
range2 = (‘bar’…‘bat’).to_a puts “#{range2}” [“bar”, “bas”, “bat”]
(1..5)        #==> 1, 2, 3, 4, 5
(1...5)       #==> 1, 2, 3, 4
('a'..'d')    #==> 'a', 'b', 'c', 'd'
range1 = (1..10).to_a
range2 = ('bar'..'bat').to_a

puts "#{
      
      range1}"
puts "#{
      
      range2}"

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
["bar", "bas", "bat"]
digits = 0…9
puts digits.include?(5) true
ret = digits.min 0
ret = digits.max 9
ret = digits.reject { |i| i < 5 } [5, 6, 7, 8, 9]
digits.each do |digit|
puts "在循环中 #{digit}"
end
在循环中 0
在循环中 1
在循环中 2
在循环中 3
在循环中 4
在循环中 5
在循环中 6
在循环中 7
在循环中 8
在循环中 9
# 指定范围
digits = 0..9
 
puts digits.include?(5)
ret = digits.min
puts "最小值为 #{
      
      ret}"
 
ret = digits.max
puts "最大值为 #{
      
      ret}"
 
ret = digits.reject {
    
    |i| i < 5 }
puts "不符合条件的有 #{
      
      ret}"
 
digits.each do |digit|
   puts "在循环中 #{
      
      digit}"
end

true
最小值为 0
最大值为 9
不符合条件的有 [5, 6, 7, 8, 9]
在循环中 0
在循环中 1
在循环中 2
在循环中 3
在循环中 4
在循环中 5
在循环中 6
在循环中 7
在循环中 8
在循环中 9

作为条件的范围

score = 70
 
result = case score
when 0..40
    "糟糕的分数"
when 41..60
    "快要及格"
when 61..70
    "及格分数"
when 71..100
       "良好分数"
else
    "错误的分数"
end
 
puts result

作为间隔的范围

检查指定值是否在指定的范围内

if ((1..10) === 5)
  puts "5 在 (1..10)"
end
 
if (('a'..'j') === 'c')
  puts "c 在 ('a'..'j')"
end
 
if (('a'..'j') === 'z')
  puts "z 在 ('a'..'j')"
end

5(1..10)
c 在 ('a'..'j')

猜你喜欢

转载自blog.csdn.net/weixin_37646636/article/details/121000779