On Fri, Sep 29, 2023 at 12:50 PM vim-dev ML <[email protected]>
wrote:

> Hi Christian,
>
> On Fri, Sep 29, 2023 at 10:30 AM Christian Brabandt <
> ***@***.***> wrote:
>
> > what is contr-variant?
> >
> >
> > Consider the following example (from #12965):
>
> class A
> endclass
>
> class B extends A
> endclass
>
> class C extends B
> endclass
>
> In this example, type "C" is a covariant of type "B" and "A" is
> contra-variant of type "B".
>
> This matters when overruling methods in an extended class. The method
> return value
> type in an extended class can use a covariant type of return value in the
> parent class.
> The type of method arguments in an extended class can use a contra-variant
> type.
>
> For example (continuing the above example):
>
> class Foo
> def Doit(p: B): B
> return B.new()
> enddef
> endclass
>
> class Baz extends Foo
> def Doit(p: A): C
> return C.new()
> enddef
> endclass
>
> The Doit() method in class Foo uses "B" as the argument type and "B" as
> the
> return type.
> The Doit() method in class Baz uses "A" as the argument type and "C" as
> the
> return type.
> "A" is a contra-variant of "B" and "C" is a co-variant of "B".
>
> A detailed explanation about this is in
>
> https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)
> ..
>
> I wanted to follow the model used in the Dart language (
> https://medium.com/dartlang/dart-declaration-site-variance-5c0e9c5f18a5).
>
>
>
Currently the type of the method arguments and return value can be a
covariant type
of the ones in the parent class method.

- Yegappan

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/CAAW7x7mijRHgkxqVUU28J4n-myndap6R0HXqtzWXiOXF0JKQ_Q%40mail.gmail.com.

Raspunde prin e-mail lui