On Sat, Nov 16, 2024, at 12:43, Valentin Udaltsov wrote:
> On Sat, 16 November 2024 at 13:42 Rob Landers <rob@bottled.codes> wrote:
>> __
>> On Sat, Nov 16, 2024, at 10:02, Juris Evertovskis wrote:
>>> Is there some reason you cannot do this:
>>>  
>>> https://3v4l.org/hF1vr
>>>  
>>> Unless I’m missing something, you can’t patch-define a namespaced 
>>> OptionalInterface that easily.
>>>  
>>> Anyway, I was not implying this is something impossible to accomplish. My 
>>> point is that it would be beneficial to have syntax for expressing “if your 
>>> app has this interface, our class implements it”.
>>>  
>>> Juris
>> 
>> Yeah, I get it now (see my reply to Marco).
>> 
>> Even with namespaces, it is pretty straightforward, though: 
>> https://3v4l.org/dmXoB
>> 
>> — Rob
> 
> This is a nice solution.
> 
> However, interface_exists should be used for interfaces.
> 
> --
> Valentin
>> 

Actually, you'd probably want to check for both (as well as traits) for a 
better developer experience.

For example, using interface_exists results in the error "Cannot declare 
interface, because the name is already in use" if a class with the same name is 
used instead of an interface. This is a nonsensical error message because the 
library is not responsible for declaring it.

Instead, you'd want the error message to be more actionable: "cannot implement 
class -- it is not an interface"

— Rob

Reply via email to