groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Schalk Cronjé <ysb...@gmail.com>
Subject Re: Behavior of .with() inside Trait
Date Wed, 10 Feb 2016 16:04:31 GMT
The interesting thing about this for me is that for

   binding.with {
     println cow
   }

the generated code is

     public static java.lang.Object action(Foo $self) {
         return $self .binding.with({
             return $self.println( $self .cow)
         }.rehydrate($self, $self, $self))
     }

but for

   println binding.cow

the generated code is

    public static java.lang.Object action(Foo $self) {
         return $self.println( $self .binding.cow)
     }


On 10/02/2016 16:52, Gerald Wiltse wrote:
> This example returns the error inside the with closure:
>
>       "No such property: cow for class:Bar"
>
> It seems .with() in a trait does not resolve the way it "normally" does.
>
>
> trait Foo {
>     def action() {
>         println binding.cow
>         binding.with {
>             println cow
>         }
>     }
> }
>
> class Bar implements Foo {
>   Binding binding = new Binding()
> }
>
>
> def myBar = new Bar()
> myBar.binding.cow = "says moo"
> myBar.action()
>
>
> If anyone has any insight, it would be helpful.
>
>
> Gerald R. Wiltse
> jerrywiltse@gmail.com <mailto:jerrywiltse@gmail.com>
>


-- 
Schalk W. Cronjé
Twitter / Ello / Toeter : @ysb33r


Mime
View raw message