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>wrote:
> > > 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