Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > using hash for method parameters

Reply
Thread Tools

using hash for method parameters

 
 
aidy
Guest
Posts: n/a
 
      05-30-2007
#hi,

#I have a login class

class Login

def with(:username, assword)
login.username.set(:username)
login.password.set(assword)
end
end

#now in my invocation, I would like to do something like this,

login = Login.new
login.with(:username => 'aidy', assword => 'aidy1')

#but I am ensure of my syntax

#regards

#aidy

 
Reply With Quote
 
 
 
 
Roseanne Zhang
Guest
Posts: n/a
 
      05-30-2007
aidy wrote:
> #hi,
>
> #but I am ensure of my syntax
>
> #regards
>
> #aidy


Are you creating your new language?

Try the following:

class Login

def with(username, password)
@username = username
@password = password
end
end

#now in my invocation, I would like to do something like this,

login = Login.new
login.with("abc", "def")
p login

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
aidy.lewis@googlemail.com
Guest
Posts: n/a
 
      05-30-2007
On 30 May, 18:17, Roseanne Zhang <rosea...@javaranch.com> wrote:

> Try the following:
>
> class Login
>
> def with(username, password)
> @username = username
> @password = password
> end
> end
>
>
> login = 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.

So, I would like my call to contain something like this:

login = Login.new
login.with(:username => 'aidy', assword => 'aidy1')

cheers

aidy


 
Reply With Quote
 
Morton Goldberg
Guest
Posts: n/a
 
      05-30-2007
On May 30, 2007, at 12:10 PM, aidy wrote:

> #hi,
>
> #I have a login class
>
> class Login
>
> def with(:username, assword)
> login.username.set(:username)
> login.password.set(assword)
> end
> end
>
> #now in my invocation, I would like to do something like this,
>
> login = Login.new
> login.with(:username => 'aidy', assword => 'aidy1')
>
> #but I am ensure of my syntax


You could do it with

<code>
class Login
def with(params)
@username = params[:username]
@password = params[assword]
end
end

login = Login.new
login.with(:username => 'aidy', assword => 'aidy1')
login.inspect # => "#<Login:0x24090 @password=\"aidy1\", @username=
\"aidy\">"
</code>

but I'd go with

<code>
class Login
def initialize(params)
@username = params[:username]
@password = params[assword]
end
end

login = Login.new(:username => 'aidy', assword => 'aidy1')
login.inspect # => "#<Login:0x23d48 @password=\"aidy1\", @username=
\"aidy\">"
</code>

as being simpler.

Regards, Morton



 
Reply With Quote
 
Mariusz Pękala
Guest
Posts: n/a
 
      05-31-2007
--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), wrote:
> On 30 May, 18:17, Roseanne Zhang <rosea...@javaranch.com> 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', assword =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', assword =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--

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
hash of hash of hash of hash in c++ rp C++ 1 11-10-2011 04:45 PM
method interface - hash argument vs. named parameters Intransition Ruby 3 06-17-2010 11:21 PM
method returning a hash, is the hash in the heap? Jian Lin Ruby 3 05-20-2010 10:17 AM
Hash#select returns an array but Hash#reject returns a hash... Srijayanth Sridhar Ruby 19 07-02-2008 12:49 PM
invoke a method by reflection£¬the method's parameters can not be ArrayList? jerry051 ASP .Net 2 08-02-2005 10:35 AM



Advertisments