I'd by far prefer it never emit a warning. The warning is assumes you
probably didnt mean to use an assignment there, but in fact thats
exactly what I wanted to do. It's a carry over warning from when matz
put in warnings to help with gotchas for new users. It's time to
remove it entirely. Once we have a good lint, I recommend we remove
all those warnings about assignments in conditional spaces.

 - Evan

On 2/6/06, Eero Saynatkari <ruby-ml / magical-cat.org> wrote:
> On 2006.02.07 14:47, Evan Webb wrote:
> > Umm, on what version are you seeing a warning there? I don't and never
> > have gotten a warning doing that exact thing.
>
> Only when dealing with literals, sorry.
>
>   if a = rand(5) ...     # OK
>
>   if a = 5 ...           # Warning
>
> Though I would actually prefer a warning (at least with -w)
> even for the cases where the rvalue is a method.
>
> >  - Evan
> >
> > On 2/6/06, Eero Saynatkari <ruby-ml / magical-cat.org> wrote:
> > > On 2006.02.07 10:03, Evan Webb wrote:
> > > > I'm not sure we even need the 'with' syntax. Even if we do, it breaks
> > > > the programmers context in a way that we might not want to have to
> > > > explain constantly. I can just hear the questions now...
> > > >
> > > > "Why are my method calls inside a with being executed on the wrong object?"
> > > >
> > > > "Well, thats because with changes self for it's body, and so you have
> > > > to be careful what you call in there."
> > > >
> > > > repeat..
> > > >
> > > > While the more hardcore of us are use to using blocks to enter into
> > > > new and strange contexts (module_eval/class_eval/instance_eval oh
> > > > my!), pushing this to the normal user is not a decision that should be
> > > > made lightly.
> > > >
> > > > As for the original syntax "&?" I'm against it. It adds a significant
> > > > new level of unreadability. At this stage of the game, any syntax
> > > > changes need to really thought out. We've already got a great,
> > > > expressive syntax. If you want to do away with the duplication of
> > > > effort, use a local variable, thats what there there for:
> > > >
> > > > if t = a[0] and t.strip.empty?
> > > >    # jump off a bridge
> > > > end
> > > >
> > > > On a regular basis I write:
> > > >
> > > > if a = something_long
> > > >    a.another_operation
> > > > end
> > > >
> > > > The local variable a gets the value "cached" and then we get to do a
> > > > conditional on it's value right away. We've got a language where
> > > > everything is an expression, lets use it!
> > >
> > > A minor nitpick, you need
> > >
> > >   if (t = something.first) and t.strip.empty?
> > >     # ...
> > >   end
> > >
> > > Otherwise a warning will be emitted (sensible behaviour).
> > >
> > > >  - Evan
> > > >
> > > > On 2/3/06, James Britt <ruby / jamesbritt.com> wrote:
> > > > > mathew wrote:
> > > > > >...
> > > > >
> > > > >
> > > > > > with a[1]
> > > > > >  strip!
> > > > > >  empty?
> > > > > > end
> > > > > >
> > > > > > or similar. Hopefully you get the basic idea anyway, and someone can
> > > > > > refine the semantics if they like it...
> > > > >
> > > > >
> > > > > I'm not too keen on terse syntax; clarity for the read takes precedence
> > > > > over ease for the writer.  The 'with' syntax is more expressive.
> > > > >
> > > > >
> > > > > James
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > When I do good, I feel good;  when I do bad, I feel bad,
> > > > and that is my religion.
> > > >     -- Abraham Lincoln (1809 - 1865)
>
>
> E
>
>


--
When I do good, I feel good;  when I do bad, I feel bad,
and that is my religion.
    -- Abraham Lincoln (1809 - 1865)