Sometime I saw you wrote regex =~ string, while sometime you wrote
string =~ regex.
What's their difference and what's the recommended way? Thanks.
Jenn.
Sometime I saw you wrote regex =~ string, while sometime you wrote
string =~ regex.
What's their difference and what's the recommended way? Thanks.
Jenn.
The first version invokes method Regexp#=~ and the second version invokes String#=~ - which happen to do roughly the same although I believe the second one to be a tad slower. I personally prefer the first form because of the speed difference and regular expression matching is rather an operation of Regexp than of String.
Kind regards
robert
On 01/04/2010 10:27 AM, Ruby Newbee wrote:
Sometime I saw you wrote regex =~ string, while sometime you wrote
string =~ regex.
What's their difference and what's the recommended way? Thanks.
--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/
Robert Klemme wrote:
Sometime I saw you wrote regex =~ string, while sometime you wrote
string =~ regex.
What's their difference and what's the recommended way? Thanks.The first version invokes method Regexp#=~ and the second version
invokes String#=~ - which happen to do roughly the same although I
believe the second one to be a tad slower. I personally prefer the
first form because of the speed difference and regular expression
matching is rather an operation of Regexp than of String.
Interesting. Whereas I prefer the second because I think
mystring =~ /foo/
is syntactically analogous to
mystring == 'foo'
Kind regards
robert
Best,
On 01/04/2010 10:27 AM, Ruby Newbee wrote:
--
Marnen Laibow-Koser
http://www.marnen.org
marnen@marnen.org
--
Posted via http://www.ruby-forum.com/\.
Very technically speaking, calling the Regexp#=~ will be
microscopically faster because it avoids a tiny bit of C code that
gets executed when calling the String#=~ version. In practice though,
the difference is so small as to be invisible against the noise of the
rest of the system.
String#=~ just has a little sugar built in.
If it's passed a Regexp, then it just calls the C function underlying Regexp#=~.
If it is passed a String, it complains.
If it is passed anything else, it tries to call #=~ on what it was
passed, passing itself as the argument. This lets one build custom
matching classes that Strings can use with the =~ syntax.
Kirk Haines
On Mon, Jan 4, 2010 at 6:20 AM, Robert Klemme <shortcutter@googlemail.com> wrote:
The first version invokes method Regexp#=~ and the second version invokes
String#=~ - which happen to do roughly the same although I believe the
second one to be a tad slower. I personally prefer the first form because
of the speed difference and regular expression matching is rather an
operation of Regexp than of String.