Sampling algorithms for D

Ali Çehreli acehreli at yahoo.com
Fri Apr 13 10:49:45 PDT 2012


On 04/13/2012 02:41 AM, Joseph Rushton Wakeling wrote:
 > On 13/04/12 01:44, bearophile wrote:
 >> final size_t select(ref UniformRNG urng)
 >> in {
 >> assert(_recordsRemaining> 0);
 >> assert(_sampleRemaining> 0);
 >> } body {
 >> ...
 >> }
 >
 > OK. I'm confused by these asserts, because if I go beyond what is
 > acceptable by calling select() even after I've collected a complete
 > sample, no error is thrown.

This is a complicated issue that touches how in contracts are not 
inherited. I think your issue is because the interface does not define 
any in contracts, effectively allowing every call to select(). Please 
start reading here: :)

   http://d.puremagic.com/issues/show_bug.cgi?id=6856

As a general reminder, there is also the invariant() blocks, and 
sometimes enforce() is more appropriate than assert.

Ali



More information about the Digitalmars-d-learn mailing list