From: hemant Date: 2007-09-01T13:10:10+09:00 Subject: Re: Method names and alias On 9/1/07, darren kirby wrote: > Hello all, > > In Unix, you can create a symlink to an executable, and have the program > behave differently depending on how it was called by testing argv[0]. I would > like to do something similar with Ruby methods using alias. > > I have many methods which come in pairs, a version each for signed and > unsigned numbers. These methods differ by only one line, eg: > > def load_byte(destination, base_address, offset) > > @registers.gen[destination] = bitstring_to_int(byte) > true > end > > def load_byte_unsigned(destination, base_address, offset) > > @registers.gen[destination] = bitstring_to_int(byte, signed=false) > true > end > > My code would be considerably DRYer if I could make 'load_byte_unsigned' an > alias to 'load_byte', and have the method inspect the name it was called as z> to decide if it should run 'bitstring_to_int(byte, signed=false)' or not. Well this is your problem, "have the method inspect the name it was called as". I guess if you really want to DRY them up ( although the other approach you suggested sounds good enough), you can use method_missing and capture method names and do stuff based on that. Also, if there is a way to determine method that you intend to call based on argument data type, then you can inspect your arguments and do DRY stuff. But i guess you would have already thought out that possibility. Anyways... > > Is there a way to do this? > > If not, I suppose my best bet is to move the snipped 15 lines to > a 'load_byte_common' method and make 'load_byte' and 'load_byte_unsigned' > thin wrappers around it? > > Thanks for consideration, > -d > -- > darren kirby :: Part of the problem since 1976 :: http://badcomputer.org > "...the number of UNIX installations has grown to 10, with more expected..." > - Dennis Ritchie and Ken Thompson, June 1972 > > -- Let them talk of their oriental summer climes of everlasting conservatories; give me the privilege of making my own summer with my own coals. http://blog.gnufied.org