Why is there no or or and ?

F i L witte2008 at gmail.com
Fri Feb 17 08:25:41 PST 2012


Timon Gehr wrote:
> The contract syntax is wrong, because it conceptually has to 
> belong to the function declaration, not the function body.

I'm not so convinced. I just hate how in/out are shoved up 
against the name of the function. I was thinking about using '.' 
to reference the current function with each sequencial '.' 
meaning parentage. if that was the case, ".conctract in {}" would 
refer to the function, though I'm not sure how to resolve the 
naming conflicts of incoming parameters. Maybe '@' for attribute? 
I've the same dilemma for properties (aliases):

      Vector2: class
      {
          x, y: float private

          X: alias
          {
              @get: x
              @set: ( val:float )
              {
                  case val != 0 { x = val }
              }
          }

          this( x, y:float, contract:int )
          {
              @contract.in
              {
                  assert( contract != 0 )
              }

              x = .x // set this.x to params.x
              ..x = .x // same as above
              y = ...y // sets this.y to super.y

              ret .. // returns this
          }
      }


More information about the Digitalmars-d mailing list