我正在阅读一些关于 ruby 编程语言的书,并且想知道这样的东西是如何工作的
class String
def word_count
frequencies = Hash.new(0)
downcase.scan(/\w+/) { |word| frequencies[word] += 1 }
return frequencies
end
end
我知道有一个内置字符串,我来自(C++)顺便说一句,所以class string
在定义一个对象时创建会产生歧义string x = new string()
,我搜索了一下,我发现一些概念被命名refinement
,它允许我们修改和添加函数到String
类,我看到他们使用关键字refine
来制作这些东西(根据文档),但是我的问题来了,当我把上面的类放在上面irb
并开始像这样测试它时"amr adel".word_count
,它给了我正确的结果,我预计不会一开始工作,所以如果它有效,为什么我什至可以refine
在我的代码中使用为什么我不只创建一个与内置类同名的类并放置附加函数和修改函数,这种方式是否在进行细化过程隐含的?
我承认 ruby 很棒而且很容易使用,但我想知道事情还在继续。
如果您可以参考一些文章或其他内容,将不胜感激谢谢