TL;DR
仅用于个人整理,对他人无甚帮助。有段时间练习算法,我记录了一些数据操作的方法,它们都不太常用,所以单独写篇博客保存。
String
bytes
返回 byte 数组,适合获取 codepoint 。
center
把 str 居中,两边填充 padstr ,默认为空格。
chars
返回 character 数组。
codepoints
返回 codepoint 数组。
"a".codepoints[0] # => 97
Integer
chr
codepoint 转换 character 。
97.chr # => "a"
even?, odd?
判断奇数和偶数。
integer?
判断是否整数。
divmod
做除法,同时返回除数和余数。有时候比分开使用 /
和 %
要方便。
1234 / 1000 # => 1
1234 % 1000 # => 234
1234.divmod 1000 # => [1, 234]
两个乘号(因为 markdown 原因打不出来)
平方和开方。
4 ** 2 # => 8
4 ** (1.0/2) # => 2
abs
求绝对值(始终正数)。
fdiv
除法,返回 float 。类似 a.to_f / b
。
10.fdiv 4 # => 2.5
Array
with_index
迭代数组并返回每个元素和 index 。这其实是迭代器 Enumerator
的方法。适用于所有迭代中需要 index 的情况,比如 map
和 reverse_each
。
%w[a b c].reverse_each.with_index { |char, i| puts i }
sample
随机选择一个数组元素并返回。适合做随机数。
pop(x)
pop x 个元素。如果数组元素数量少于 x,就返回最多能返回的元素。这点比用 [range]
要好。
%w[a b c].pop(4) # => ["a", "b", "c"]
%w[a b c][-4..-1] # => nil
& 和 |
取两个数组的交集和并集。