我正在查看一些外部代码,并看到一行看起来像这样的Ruby代码
string_name = string_name[3..-1]
Run Code Online (Sandbox Code Playgroud)
是什么在[n..-x]
做什么或意味着什么呢?
谢谢.
module MyModule
def my_method; 'hello'; end
end
class MyClass
class << self
include MyModule
end
end
MyClass.my_method # => "hello
Run Code Online (Sandbox Code Playgroud)
我不确定为什么"包含MyModule"需要在单例类中才能使用MyClass进行调用.
为什么我不能去:
X = MyClass.new
X.my_method
Run Code Online (Sandbox Code Playgroud) 我在想.在Ruby中测试数组是否包含另一个数组的最快方法是什么?所以我构建了这个小基准脚本.很想听听你对比较方法的看法.你知道其他一些 - 或许更好的方法吗?
require 'benchmark'
require 'set'
a = ('a'..'z').to_a.shuffle
b = ["b","d","f"]
Benchmark.bm do |x|
x.report do
10000.times do
Set[b].subset?(a.to_set)
end
end
x.report do
10000.times do
(a & b).count == b.size
end
end
x.report do
10000.times do
(a.inject(0) {|s,i| s += b.include?(i)?1:0 } == b.size)
end
end
x.report do
10000.times do
(b - a).empty?
end
end
x.report do
10000.times do
b.all? { |o| a.include? o }
end
end
end
Run Code Online (Sandbox Code Playgroud)
结果:
user system total real
0.380000 0.010000 0.390000 ( 0.404371) …
Run Code Online (Sandbox Code Playgroud) 我希望能够将字符串拆分为2个元素,因为每个字符串至少包含一个分隔符.
示例:"hello_world"
.如果我申请,.split("_")
我会收到:["hello", "world"]
.
当我有一个包含两个或更多分隔符的字符串时会出现问题.例子"hello_to_you"
.我想收到:["hello_to", "you"]
.
我知道split函数的limit选项:.split("_", 2)
但它产生:["hello", "to_you"]
.
所以,基本上,我需要将整个字符串与最后一个分隔符("_")分开.
我该如何转换这个数组:
@list = ["one", "two", "three", "four"]
Run Code Online (Sandbox Code Playgroud)
使用前面的键进入这样的新数组:
@new_list = ["1. one", "2. two", "3. three", "4. four"]
Run Code Online (Sandbox Code Playgroud)
使用each
和inject
Ruby的?