Complex networks in D

bearophile bearophileHUGS at lycos.com
Tue Jul 16 08:57:04 PDT 2013


Joseph Rushton Wakeling:

> It wasn't clear to me what the benefits were, though,

For this function not a lot, but it's a good habit to have.


> especially as I did consider making this an enforce() rather 
> than an assert().

If you want to use enforce then don't put them in pre-conditions.
But usually asserts should suffice.


>> And "in size_t v" is enough compared to "immutable size_t v".
>
> Does "in" allow for subsequent mutation _within_ the function?

"in" implies scoped const. So you can't mutate the argument 
inside the function/method. For reference types "immutable" is 
even stronger.


>> For such kind of code I suggest to use UFCS chains.
>
> Can you explain in a little more detail?  It's not an aspect of 
> programming I'm familiar with.

auto r1 = iota(_sumHead[v], _sumHead[v + 1]).map!(a => 
_tail[_indexHead[a]]);
auto r2 = iota(_sumTail[v], _sumTail[v + 1]).map!(a => 
_head[_indexTail[a]]);
return chain(r1, r2);


> Anyway, thanks very much for the useful feedback :-)

You are welcome,
bye,
bearophile


More information about the Digitalmars-d-announce mailing list