Re: Swift function overloading - invoking func with specific parameter (in place of Any parameter) on passing Any object
Re: Swift function overloading - invoking func with specific parameter (in place of Any parameter) on passing Any object
- Subject: Re: Swift function overloading - invoking func with specific parameter (in place of Any parameter) on passing Any object
- From: Andrew Thompson via Cocoa-dev <email@hidden>
- Date: Mon, 28 Oct 2019 07:07:21 -0400
You may prefer this?
In ViewController
For each child in children
child.displayTo(self)
In each class such as Address
Function displayTo(ViewController: target)
target.display(self)
This ought to work as the type of self will be precisely Address. You may be
able to turn this into a protocol ViewController implements if you want to
decouple further.
Some languages do support the kind of method overloading you were looking for
(late binding based on the type of all the parameters). Eg. Scala does but
Swift and Java do not for example.
To be honest, if Address, Order and Person share nothing in common I would
avoid overloading here and just write displayPerson etc, but I’m trying to
answer your question and not redesign your whole solution. Give it some
thought.
Andrew
>> On Oct 28, 2019, at 1:03 AM, Devarshi Kulshreshtha
>> <email@hidden> wrote:
>
> So the other thing which came to my mind was similar to what you have
> suggested:
>
> a. Declare Displayable protocol with func display()
> b. Let each Model implement this protocol
> c. Within forEach on children I can just bind and typecast to the protocol
> and invoke display method on it
>
> However this looks like an ugly solution to me as Model is now serving 2
> responsibilities - i. Handle/ Store data, ii. Handle how the data is
> displayed. The 2nd responsibility looks to me like more reasonable for a
> controller or presenter class to implement rather than the model class, hence
> I want to avoid that path.
>
>> On Sun, Oct 27, 2019 at 7:55 PM Andrew Thompson <email@hidden> wrote:
>>
>> > Is there any other elegant way to achieve the desired behavior without
>> > using `if-let + typecasting`?
>>
>>
>> One way is to use classes instead on structs and define display as a method
>> on those classes. I’m no Swift expert but I expect you may find value in
>> making display() into a protocol.
>>
>>
>> Andrew
>
>
> --
> Thanks,
>
> Devarshi
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden