Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 删除内核数组方法_Ruby - Fatal编程技术网

Ruby 删除内核数组方法

Ruby 删除内核数组方法,ruby,Ruby,我想知道如何删除方法Kernel.Array.rand。当用户试图调用它时,它应该给出一个错误;任何错误都可以 我试了如下。我尝试了Kernel.Array和Kernel::Array而不是Random,但它们都不起作用 class << Random; self; end.send :remove_method, :rand 甚至可以在“自动完成”选项卡中使用 尝试rand,因为这是避免使用随机方法所必需的。所以我还需要从数组中删除sample和shuffle 但看看我得到了什么

我想知道如何删除方法
Kernel.Array.rand
。当用户试图调用它时,它应该给出一个错误;任何错误都可以

我试了如下。我尝试了
Kernel.Array
Kernel::Array
而不是
Random
,但它们都不起作用

class << Random; self; end.send :remove_method, :rand
甚至可以在“自动完成”选项卡中使用

尝试rand,因为这是避免使用随机方法所必需的。所以我还需要从数组中删除sample和shuffle

但看看我得到了什么:

class << Array; self; end.send :remove_method, :sample
NameError: method `sample' not defined in Class
from (irb):31:in `remove_method'
from (irb):31

class您可以使用
undef\u方法
(与
remove\u方法
的区别在于
undef\u方法
将走上继承链)


什么是
Kernel.Array.rand
?Array上没有
rand
方法。我更好地解释了我的情况。我以为那也不存在,但请看我编辑的帖子。@CassioS.Cabral:“参数数量错误”错误是关于
Kernel.Array
expression的<代码>兰德
没有被调用(由于错误)删除兰德很好,谢谢。我的问题是数组类。我编辑了我的问题,以便能够反映这一点。抱歉误解。@CassioS.Cabral:我要说清楚,问题是您试图从数组的特征类而不是数组本身中删除
sample
方法。
class << Array; self; end.send :remove_method, :sample
NameError: method `sample' not defined in Class
from (irb):31:in `remove_method'
from (irb):31
rand # => 0.3417719504956065

Kernel.send :undef_method, :rand # private method, have to use `send`

rand # ~> -:5:in `<main>': undefined local variable or method `rand' for main:Object (NameError)
module Kernel
  undef_method :rand
end

class Array
  undef_method :sample
end

rand # ~> -:9:in `<main>': undefined local variable or method `rand' for main:Object (NameError)
[1, 2].sample # ~> -:10:in `<main>': undefined method `sample' for [1, 2]:Array (NoMethodError)