Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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,在ruby控制台中键入 a = String.new('cool') 'cool' 数组也是如此 b = Array.new([1,2,3,4]) [1,2,3,4] 我需要做如下的事情 class NewArray < Array def initialize(something) # doing some action with something # and construct and array like [1,2,3,4,5] end .

在ruby控制台中键入

a = String.new('cool')
'cool'
数组也是如此

b = Array.new([1,2,3,4])
[1,2,3,4]
我需要做如下的事情

class NewArray < Array

  def initialize(something)
    # doing some action with something
    # and construct and array like
    [1,2,3,4,5]
  end
  ...
end
到现在为止,我得到了类似的东西

a = NewArray.new(something)
#<NewArray:0x00000aab5fe>
a
#<NewArray:0x00000aab5fe>
a=NewArray.new(某物)
#
A.
#
更新
NewArray(something)
更改为
NewArray.new(something)

建议永远不要从核心类继承(除非您真的知道自己在做什么),但还有很多。 但是,您可以通过像这样的
SimpleDelegator
类获得所需的功能

 require 'delegate'
 class NewArray < SimpleDelegator; end

 NewArray.new([1,2,3])
 #=> [1, 2, 3]
需要“委托”
类NewArray [1, 2, 3]

为了能够向名称(如NewArray)发送参数,您需要将其定义为方法

def NewArray(something)
  [1, 2, 3, 4 ,5]
end
puts NewArray('anything')

这并不是很常见,但对于Integer和Array等方法以及内核模块上的其他一些方法都是这样做的。

NewArray不是一个方法,所以为什么要尝试向它发送一个参数?您是否真的得到了您在第
a=NewArray(something)
行中所说的结果,还是您得到了一个错误?@mgs还需要注意的是,当您想要初始化一个类的新实例时,必须调用
ClassName.new()
。否则,
NewArray(something)
将被读取为
some\u方法(param)
。最好保持方法和对象名
小写
,类名
大写
,常量
大写
def NewArray(something)
  [1, 2, 3, 4 ,5]
end
puts NewArray('anything')