Ruby 中用于“String#include?”的算法
有谁能够确定包含使用哪种算法? Ruby 中的方法?例如
"helloworld".include?("hello")
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有谁能够确定包含使用哪种算法? Ruby 中的方法?例如
"helloworld".include?("hello")
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
正如 emboss 在他的回答中所述,
String#include
调用rb_str_index
。该函数依次调用rb_memsearch
,它实现Rabin-Karp 字符串搜索算法< /a>,根据 这篇文章ruby-forum.com
。As emboss states in his answer,
String#include
callsrb_str_index
. This function in turn callsrb_memsearch
, which implements the Rabin-Karp string search algorithm, according to this post onruby-forum.com
.Ruby 语言规范没有规定任何特定的算法。每个实现都可以使用他们想要的任何算法。
例如,在 Rubinius 中,
String#include?
调用String#find_string
:String#find_string
依次实现通过string_index
原语:string_index
原语由 <代码>rubinius::String::index 函数:rubinius::String::index
:The Ruby Language Specification doesn't prescribe any particular algorithm. Every implementation can use whatever algorithm they want.
For example, in Rubinius,
String#include?
callsString#find_string
:String#find_string
in turn is implemented via thestring_index
primitive:The
string_index
primitive is implemented by therubinius::String::index
function:rubinius::String::index
:这是
String#include?
的实际实现:因此实际使用的算法可以在 rb_str_index。
This is the actual implementation of
String#include?
:So the actual algorithm used can be found in rb_str_index.