On 1 ον, 18:38, Josh Cheek <josh.ch... / gmail.com> wrote: > On Wed, Jun 1, 2011 at 4:15 AM, Ilias Lazaridis <il... / lazaridis.com> wrote: > > On 1 ον, 11:28, Josh Cheek <josh.ch... / gmail.com>rote: > > > 2011/6/1 Ilias Lazaridis <il... / lazaridis.com> > > > > On 31 úïò, 17:26, Josh Cheek <josh.ch... / gmail.com> wrote: > > > > > [Note: parts of this message were removed to make it a legal post.] > > > > > > On Tue, May 31, 2011 at 8:05 AM, Ilias Lazaridis < > > il... / lazaridis.com > > > > >wrote: > > > > > > > ruby 1.9 > > > > > > > (this is about the *abilities* or the ruby 1.9 language) > > > > > > > class Persnon > > > > > > attrib name String opt1 opt2 > > > > > > attrib age Integer > > > > > > end > > > > > > > The main questions: > > > > > > a) Can such an "attrib" method be implemented with ruby code? > > > > > > b) Can such an "attrib" functionality be implemented on the C-level > > > > > > (as extension, not as modification of source)? > > > > > > > Any examples? > > > > > > > Please notice the requirements: > > > > > > > 1) "name" and not ":name" > > > > > > 2) no comma between "name" and "String" and "opt1" ... > > > > > > Almost certain this can't be done. > > > > > ok > > > > > > You could do something somewhat close to that, as seen in the below > > > > example. > > > > [...] > > > > > this is far to complex expressed. > > > > > Can you simplify this, e.g. avoiding usage of "rspec"? > > > > No, because the request itself makes me worried you'd actually use that > > > code. > > > This is a public archived group, thus other readers will benefit from > > a compact answer, too. > > > Of course I can try to minimize / summarize the code myself. > > I don't think anyone else has this problem. But if they do, I don't think > they'll be able to understand the solution anyway. I think they are able to understand it, it's not that complicated (only complicated expressed / coded). But there are some problems: The main problem with your suggestion is * that any classes to be used must be hardcoded * that class constants become functions: [String, Integer].each do |const| define_method const.to_s do |args| next_meth_sig << const end end Additionally, you wrote: "However, you would be susceptible to all the method_missing bugs. In fact, your example even hit one, because Class.new.respond_to?(:name) is true, it wouldn't hit method_missing. This is why in the example, it must be called name2." It's not a bug. You hit on the Module#name method. - I understand that such a construct could be implemented as a C-level extension (without alteration of the main sources). Can someone pleas confirm? . -- http://lazaridis.com