Hi Patrick,
On Thu, Feb 5, 2015 at 9:13 PM, Patrick Schaaf <[email protected]> wrote:
> On Thursday 05 February 2015 15:14:04 Dmitry Stogov wrote:
> >
> > function foo()
> > requre(<input-assert-expression>)
> > ensure(<output-assert-expression>)
> > {
> > ...
> > }
> >
> > It would require only one new reserved word "ensure".
>
> Regarding syntax.... This could be another place where the irrationally-
> dreaded declare would make sense:
>
> function foo() {
> declare(pre) {
> if (whatever...) return false;
> // arbitrary PHP code
> }
> declare(post=$resultvar) {
> if ($resultvar == XXX) return true;
> return false;
> }
> }
>
> This way, no new reserved words are needed at all, and the programmer can
> give
> a name to the "variable that holds the result" locally to avoid clashes
> with
> anything else in the function.
>
> I'm a bit undecided whether returning true/false there to give the verdict,
> would be the best way. Maybe better would be another use for declare,
> without
> a block, to declare that the pre/postcondition failed - giving a nice
> place to
> put a suitable message, too. And again without introducing any extra
> keywords:
>
> function foo() {
> declare(post=$resultvar) {
> if ($resultvar == XXX) declare(fail="My $resultvar looks fishy");
> }
> }
>
The idea of "declare(post=$resultvar)" seems interesting, even though
post=$resulvar
looks wired.
$resultvar is L value, but it's located as R value.
There may be better syntax.
Regards,
--
Yasuo Ohgaki
[email protected]