From: "Mariusz Pękala" Date: 2007-05-31T19:45:46+09:00 Subject: Re: using hash for method parameters --cNdxnHkX5QqsyA0e Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2007-05-31 02:35:08 +0900 (Thu, May), aidy.lewis@googlemail.com wrote: > On 30 May, 18:17, Roseanne Zhang wrote: >=20 > > Try the following: > > > > class Login > > > > def with(username, password) > > @username =3D username > > @password =3D password > > end > > end > > > > > > login =3D Login.new > > login.with("abc", "def") > > p login > > > Thanks for the post, but I am trying to explicitly name the parameters > in the call, by attempting to use symbols and a hash, to make things a > little more readable. >=20 > So, I would like my call to contain something like this: >=20 > login =3D Login.new > login.with(:username =3D> 'aidy', :password =3D> 'aidy1') >=20 You can use something like this: def with params =3D {} params.each do |key,value| m =3D "#{key}=3D" self.send(m, value) if self.respond_to?(m) end end but you should build-in additional checks which will filter out possibly unsafe assignments, which you would not want here. Another thing, you may want to call it 'initialize', to be able to use: login =3D Login.new :username =3D> 'username', :password =3D> 'pass' BTW this is similiar to how ActiveRecord works. --=20 No virus found in this outgoing message. Checked by 'grep -i virus $MESSAGE' Trust me. T=C4=99dy przebiegli, =C5=BCaden z nich krok=C3=B3w nie szcz=C4=99dzi=C5=82 m=C4=99=C5=BCny ten, co ucieka=C5=82, m=C4=99=C5=BCniejszy, co p=C4=99dzi= =C5=82. -- Homer, Iliada. Ceterum censeo Internet Explorer esse delendam. I have tried to Google this question, but Google said: "Application error, Rails application failed to start properly" () The ASCII Ribbon Campaign - against HTML Email, /\ vCards, and proprietary formats. --cNdxnHkX5QqsyA0e Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7-ecc0.1.6 (GNU/Linux) iD8DBQFGXqdJsnU0scoWZKARAjSRAJkBd6Z2o8icVk/vX6tqcX2k4r7GcgCeMJue QFH0+qbZtTiREJODbC3Ox80= =Cc00 -----END PGP SIGNATURE----- --cNdxnHkX5QqsyA0e--