|
|
 |
 |
 |
 |
Ruby Programming Language
|
 |
 |
 |
 |
 |
 |
 |
 |
using hash for method parameters
#hi, #I have a login class class Login def with(:username, :password) login.username.set(:username) login.password.set(:password) end end #now in my invocation, I would like to do something like this, login = Login.new login.with(:username => 'aidy', :password => 'aidy1') #but I am ensure of my syntax #regards #aidy
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/.
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', :password => 'aidy1') cheers aidy
On May 30, 2007, at 12:10 PM, aidy wrote:
> #hi, > #I have a login class > class Login > def with(:username, :password) > login.username.set(:username) > login.password.set(:password) > end > end > #now in my invocation, I would like to do something like this, > login = Login.new > login.with(:username => 'aidy', :password => 'aidy1') > #but I am ensure of my syntax
You could do it with <code> class Login def with(params) @username = params[:username] @password = params[:password] end end login = Login.new login.with(:username => 'aidy', :password => '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[:password] end end login = Login.new(:username => 'aidy', :password => 'aidy1') login.inspect # => "#<Login:0x23d48 @password=\"aidy1\", @username= \"aidy\">" </code> as being simpler. Regards, Morton
> -----Original Message----- > From: aidy.le @googlemail.com [mailto:aidy.le @googlemail.com] > Sent: Thursday, 31 May 2007 5:35 a.m. > To: ruby-talk ML > Subject: Re: using hash for method parameters > 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', :password => 'aidy1') > cheers > aidy
You could use something like: class Login def with(params) @username = params[:username] @password = params[:password] end end login = Login.new login.with({:username => 'aidy', :password => 'aidy1'}) Haven't tested this but it gives the general idea. Gary Thomas
On 2007-05-31 02:35:08 +0900 (Thu, May), aidy.le@googlemail.com wrote:
> 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', :password => 'aidy1')
You can use something like this: def with params = {} params.each do |key,value| m = "#{key}=" 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 = Login.new :username => 'username', :password => 'pass' BTW this is similiar to how ActiveRecord works. -- No virus found in this outgoing message. Checked by 'grep -i virus $MESSAGE' Trust me. T dy przebiegli, aden z nich krokw nie szcz dzi m ny ten, co ucieka , m niejszy, co p dzi . -- 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.
|
|
application_pgp-signature_part
1K
Download
|
|
 |
 |
 |
 |
|