What the hell is the => operator?

  • Thread starter Just Another Victim of the Ambient Morality
  • Start date
J

Just Another Victim of the Ambient Morality

I've seen this in some ruby code but I have no idea what is going on.
I'd do a google search on it but... I don't search for '=>' and I don't know
how to describe it in english so that the context will be this!
I've seen this operator used in, what seems to me, to be totally bizarre
contexts. As far as I know, it's only used in hash definitions. However,
it's used in both Rails and scRUBYt. It looks something like this:


method_call :symbol => false do
# do something here
end

another_method random_var, :symbol => :eek:ther_symbol do
# do something else
end


Can someone explain to me what is going on here?
Thank you...
 
S

stephan.kaemper

Am Freitag said:
I've seen this in some ruby code but I have no idea what is going on.
I'd do a google search on it but... I don't search for '=>' and I don't know
how to describe it in english so that the context will be this!
I've seen this operator used in, what seems to me, to be totally bizarre
contexts. As far as I know, it's only used in hash definitions. However,
it's used in both Rails and scRUBYt. It looks something like this:


method_call :symbol => false do
# do something here
end

another_method random_var, :symbol => :eek:ther_symbol do
# do something else
end


Can someone explain to me what is going on here?

It's mostly 'syntactic sugar'. In Ruby you can leave the curly braces {} in a method call away in case the last values form a hash.

For example:

method_call( param_1, param_2, :sym1 => 'something', 'another_key' => :another_value )

Note that you're not limited to symbols as hash keys.


The following examples are esentially the same:

method_call( :symbol => false ) do
# do something here
end

another_method( random_var, :symbol => :eek:ther_symbol ) do
# do something else
end


method_call( { :symbol => false } ) do
# do something here
end

another_method( random_var, { :symbol => :eek:ther_symbol } ) do
# do something else
end



'=>' is used to point from a hash key to its value.



Happy rubying

Stephan
 
B

bbxx789_05ss

Just said:
Can someone explain to me what is going on here?
Thank you...

def methA(arg)
p arg
end

methA({'a'=>10})
methA('a'=>10)
methA 'a'=>10

--output:---
{"a"=>10}
{"a"=>10}
{"a"=>10}




def methB(arg)
p arg
end

methB({'a'=>10, 'b'=>20})
methB('a'=>10, 'b'=>20)
methB 'a'=>10, 'b'=>20

--output:--
{"a"=>10, "b"=>20}
{"a"=>10, "b"=>20}
{"a"=>10, "b"=>20}



def methC(arg1, arg2)
p arg1, arg2
end

methC(12.3, {'a'=>10, 'b'=>20})
methC(12.3, 'a'=>10, 'b'=>20)
methC 12.3, 'a'=>10, 'b'=>20

--output:---
12.3
{"a"=>10, "b"=>20}
12.3
{"a"=>10, "b"=>20}
12.3
{"a"=>10, "b"=>20}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top