小编Mar*_*une的帖子

"string_name = string_name [3 ..- 1]"下面的红宝石代码是什么意思?

我正在查看一些外部代码,并看到一行看起来像这样的Ruby代码

string_name = string_name[3..-1]
Run Code Online (Sandbox Code Playgroud)

是什么在[n..-x]做什么或意味着什么呢?

谢谢.

ruby string syntax

1
推荐指数
1
解决办法
67
查看次数

关于Ruby单例类的一般问题

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 singleton

1
推荐指数
1
解决办法
560
查看次数

测试Ruby中数组包含的最快方法

我在想.在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)

ruby arrays benchmarking

1
推荐指数
1
解决办法
952
查看次数

Rails按最后分隔符分割

我希望能够将字符串拆分为2个元素,因为每个字符串至少包含一个分隔符.

示例:"hello_world".如果我申请,.split("_")我会收到:["hello", "world"].

当我有一个包含两个或更多分隔符的字符串时会出现问题.例子"hello_to_you".我想收到:["hello_to", "you"].

我知道split函数的limit选项:.split("_", 2)但它产生:["hello", "to_you"].

所以,基本上,我需要将整个字符串与最后一个分隔符("_")分开.

ruby regex split ruby-on-rails delimiter

1
推荐指数
1
解决办法
2136
查看次数

什么是Array#包含的算法?使用?

对于ruby where x数组,如何x.include?(y)检查是否yx?什么是算法?

ruby arrays

0
推荐指数
1
解决办法
142
查看次数

在Ruby中从数组创建一个列表

我该如何转换这个数组:

@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)

使用eachinjectRuby的?

ruby inject map

0
推荐指数
1
解决办法
1286
查看次数