the other answer is on the money, but, in this particular case, it seems to 
me that you might want to have a function that could take both of those, 
with the idea that you never get more than max_num_items, but that if you 
find max_iter_id before that, the sequence stops there.

in that case, named args would be more suitable.  something like

function getitems(; max_num_items=-1, max_iter_id=...)

where you might still have a special type for item id, but also have a 
special singleton that means "none" (like -1 means unlimited for 
max_num_items).

then you could specify none (all items), either, or both.

andrew


On Friday, 26 June 2015 23:30:45 UTC-3, ks wrote:
>
> Hello everyone,
>
> I've just started to write a bit of code in Julia and I'm still exploring 
> the best ways of doing this and that. I'm having this small problem now and 
> wanted to ask for your advice.
>
> I'd like to have two methods that retrieve some items. The first method 
> takes the max number of items that should be retrieved. And the second 
> method takes the max item id.
>
> getitems( maxnumitems )
> getitems( maxitemid )
>
> In both cases the argument has the same type: Int. So how do I take the 
> advantage of multiple dispatch mechanism in this situation? And is multiple 
> dispatch really the recommended way of handling a situation like this one? 
> Here're some alternatives that I thought of:
>
> 1. Use different function names: getitems, getitems_maxid. Not too elegant 
> as you mix purpose and details of function usage in its name.
> 2. Use named arguments. This will cause the function implementation to 
> grow (a series of if / else), again not too elegant.
> 3. Define a new type: ItemId which behaves exactly as Int but can be used 
> to 'activate' multiple dispatch (one function would use Int and the second 
> one would use ItemId). Generally not the best approach if you have methods 
> each having an argument that should be really represented as an Int rather 
> than a new type.
> 4. ...?
>
> What would you recommend ?
>
> Thank you,
> ks
>

Reply via email to