ruby – 尝试创建一个从同一个类中选择随机方法的方法

也许这是一个愚蠢的想法……我是Ruby的新手(也是OOP,所以我仍然不知道我大部分时间都在做什么),我想到了一个小而有趣的项目,我想挣扎着一些概念.

我正在构建的基本上是一个字符串操纵器.我正在使用额外的方法构建一个模块,然后将其包含在String类中.

我的模块有几种方法以不同的方式操作字符串,主要是替换单词,然后返回修改后的字符串.

为了使字符串操作更“自发”和自然,我想做的是创建一个“主”方法(我将从字符串中调用的方法),随机选择一种字符串操作方法,以及然后返回字符串(然后可以再次调用以一次应用多个操作)

我该怎么做,或类似的东西?希望我解释自己

谢谢

O.

最佳答案
这是随机操作模块,正如您所描述的那样. something_random是主要方法:

module RandomStringManipulation

  def something_random
    methods = RandomStringManipulation.instance_methods
    methods -= [:something_random]
    send methods.sample    # Ruby >= 1.9 required.  See below for Ruby 1.8.
  end

  def foo
    self + "foo"
  end

  def bar
    self + "bar"
  end

end

将其混合成字符串:

class String
  include RandomStringManipulation
end

现在我们可以创建一个空字符串,然后对它进行几次随机的操作,每次打印出来:

s = ""
4.times do
  s = s.something_random
  p s
end

# => "foo"
# => "foobar"
# => "foobarbar"
# => "foobarbarfoo"

有两个有趣的位.首先是:

methods -= [:something_random]

这从数组方法中删除:something_random,阻止* something_random *方法调用自身.第二个有趣的是这个:

send methods.sample

Array.sample(Ruby> = 1.9)选择随机方法.发送然后调度该方法.在Ruby 1.8中,请执行以下操作:

send methods[rand(methods.size)]

转载注明原文:ruby – 尝试创建一个从同一个类中选择随机方法的方法 - 代码日志