| Thread overview | |||||
|---|---|---|---|---|---|
|
March 29, 2016 Oh, no UFCS for member functions | ||||
|---|---|---|---|---|
| ||||
Too bad this doesn't work:
struct Player
{
MapTile[] playerMap; // partial private knowledge of map
Location destination;
auto tile(Location loc)
{
return playerMap[loc];
}
void foo()
{
if(destination.tile.hasMonster)
...
}
}
| ||||
March 29, 2016 Re: Oh, no UFCS for member functions | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Luís Marques | On Tuesday, 29 March 2016 at 14:56:53 UTC, Luís Marques wrote:
> Too bad this doesn't work:
>
> struct Player
> {
> MapTile[] playerMap; // partial private knowledge of map
> Location destination;
>
> auto tile(Location loc)
> {
> return playerMap[loc];
> }
>
> void foo()
> {
> if(destination.tile.hasMonster)
> ...
> }
> }
By design. I don't remember the rationale, though.
The ugly workaround if you really don't want to reorganise things (and/or use the tile function directly) is to make a top-level alias tile = Player.tile;
| |||
March 29, 2016 Re: Oh, no UFCS for member functions | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Anonymouse | On Tuesday, 29 March 2016 at 15:08:05 UTC, Anonymouse wrote:
> The ugly workaround if you really don't want to reorganise things (and/or use the tile function directly) is to make a top-level alias tile = Player.tile;
Cool, I was not aware of that workaround. Also, I wonder if this workaround doesn't argue somewhat against the rationale for not having member-function UFCS, whatever it was.
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply