Scoped Operator Overloading
Carl
carl at email.com
Sat Jun 1 23:46:47 PDT 2013
On Sunday, 2 June 2013 at 05:52:11 UTC, Morning Song wrote:
> On Sunday, 2 June 2013 at 05:27:08 UTC, Carl wrote:
>> I am writing a class to act like a database or cache. I want
>> to enable looping with foreach, but I need two separate
>> opApply methods. One for the internal looping through raw data
>> and a second for looping through the cached data (strings for
>> example).
>>
>> Is there a way to scope the first opApply (looping through raw
>> data) to only be accessible inside the class? This would be
>> beneficial to prevent someone from accidentally looping
>> through raw data instead of their cached objects.
>
> If the delegates to the opApply have different parameters (I.e.
> it's actually a different data type getting passed to the
> foreach
> loop), then method overloading will take care of it; just mark
> one of them private.
>
> If they both need to get sent the same kind of data, it's a
> hack,
> but you could try encapsulating the data for the raw one inside
> a
> private struct. Then, inside the foreach loop, you can "unpack"
> the data from the struct before using it.
> std.typecons.Typedef!(T) might also help--As I understand, it'll
> make a type alias that's considered by the compiler to be a
> separate data type.
Well I will encapsulate the raw data in a struct or class if all
else fails. However, when making opApply private still allowed me
to use foreach outside of its scope...
More information about the Digitalmars-d-learn
mailing list