Re: final methods by default

2015-03-20 Thread Daniel Kozak via Digitalmars-d-learn

On Fri, 20 Mar 2015 22:11:51 +
weaselcat via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote:

 On Friday, 20 March 2015 at 14:25:22 UTC, ref2401 wrote:
  Why aren't methods of class final by default?
 
 history
 
 use final class, it should devirtualize all methods.
 see: https://github.com/D-Programming-Language/dmd/pull/4427

Yes, but you can not extend final class. Ok you can still use UFCS but it
is not elegand solution.


Re: final methods by default

2015-03-20 Thread Daniel Kozak via Digitalmars-d-learn

On Fri, 20 Mar 2015 16:27:04 -0700
Jonathan M Davis via Digitalmars-d-learn digitalmars-d-learn@puremagic.com
wrote:

 On Friday, March 20, 2015 23:53:14 Daniel Kozak via Digitalmars-d-learn wrote:
 
  On Fri, 20 Mar 2015 22:11:51 +
  weaselcat via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote:
 
   On Friday, 20 March 2015 at 14:25:22 UTC, ref2401 wrote:
Why aren't methods of class final by default?
  
   history
  
   use final class, it should devirtualize all methods.
   see: https://github.com/D-Programming-Language/dmd/pull/4427
 
  Yes, but you can not extend final class. Ok you can still use UFCS but it
  is not elegand solution.
 
 Then you can just do
 
 class Foo
 {
 final:
 // methods...
 }
 
 or
 
 class Foo
 {
 final
 {
 // methods...
 }
 }
 
 And even if you couldn't do that, you could always mark each function with
 final individually.
 

Yes I know that and use it. Not often because I use struct and templates so I
need to marks methods as final occasionally ;-)


Re: final methods by default

2015-03-20 Thread Dude via Digitalmars-d-learn

On Friday, 20 March 2015 at 23:47:37 UTC, Daniel Kozak wrote:


On Fri, 20 Mar 2015 16:27:04 -0700
Jonathan M Davis via Digitalmars-d-learn 
digitalmars-d-learn@puremagic.com

wrote:

On Friday, March 20, 2015 23:53:14 Daniel Kozak via 
Digitalmars-d-learn wrote:


 On Fri, 20 Mar 2015 22:11:51 +
 weaselcat via Digitalmars-d-learn 
 digitalmars-d-learn@puremagic.com wrote:


  On Friday, 20 March 2015 at 14:25:22 UTC, ref2401 wrote:
   Why aren't methods of class final by default?
 
  history
 
  use final class, it should devirtualize all methods.
  see: 
  https://github.com/D-Programming-Language/dmd/pull/4427


 Yes, but you can not extend final class. Ok you can still 
 use UFCS but it

 is not elegand solution.

Then you can just do

class Foo
{
final:
// methods...
}


yes only if I want all methods be virtual and without any other 
members:


class C {
final:
string field;
}

does not work.


or

class Foo
{
final
{
// methods...
}
}


Not usefull, I rarely have more than a few final function 
following one by one.




And even if you couldn't do that, you could always mark each 
function with

final individually.



Definitely the best way (in my cases).


Re: final methods by default

2015-03-20 Thread Jonathan M Davis via Digitalmars-d-learn
On Friday, March 20, 2015 23:53:14 Daniel Kozak via Digitalmars-d-learn wrote:

 On Fri, 20 Mar 2015 22:11:51 +
 weaselcat via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote:

  On Friday, 20 March 2015 at 14:25:22 UTC, ref2401 wrote:
   Why aren't methods of class final by default?
 
  history
 
  use final class, it should devirtualize all methods.
  see: https://github.com/D-Programming-Language/dmd/pull/4427

 Yes, but you can not extend final class. Ok you can still use UFCS but it
 is not elegand solution.

Then you can just do

class Foo
{
final:
// methods...
}

or

class Foo
{
final
{
// methods...
}
}

And even if you couldn't do that, you could always mark each function with
final individually.

Yes. final should probably be the default, but unfortunately, that's not the
choice that was made early on, and it was decided later that the change
wasn't worth the breakage. But it can be worked around easily enough.

- Jonathan M Davis



Re: final methods by default

2015-03-20 Thread John Colvin via Digitalmars-d-learn

On Friday, 20 March 2015 at 14:25:22 UTC, ref2401 wrote:

Why aren't methods of class final by default?


Because of a design choice to maximise usage flexibility that is 
questionable but not likely to change.


final methods by default

2015-03-20 Thread ref2401 via Digitalmars-d-learn

Why aren't methods of class final by default?


Re: final methods by default

2015-03-20 Thread Gary Willoughby via Digitalmars-d-learn

On Friday, 20 March 2015 at 14:25:22 UTC, ref2401 wrote:

Why aren't methods of class final by default?


See: http://forum.dlang.org/thread/lfqoan$5qq$1...@digitalmars.com


Re: final methods by default

2015-03-20 Thread weaselcat via Digitalmars-d-learn

On Friday, 20 March 2015 at 14:25:22 UTC, ref2401 wrote:

Why aren't methods of class final by default?


history

use final class, it should devirtualize all methods.
see: https://github.com/D-Programming-Language/dmd/pull/4427