Re: How to "Inherit" the attributes from a given callable argument?

2019-06-13 Thread Jacob Carlborg via Digitalmars-d-learn
On 2019-06-12 22:42, Mek101 wrote: I didn't know it applied to templates other than lambdas. Thank you for your explanation. It applies to templates, lambdas (which basically are templates) and nested functions. -- /Jacob Carlborg

Re: How to "Inherit" the attributes from a given callable argument?

2019-06-13 Thread Jonathan M Davis via Digitalmars-d-learn
On Thursday, June 13, 2019 3:49:04 AM MDT Jacob Carlborg via Digitalmars-d- learn wrote: > On 2019-06-12 22:42, Mek101 wrote: > > I didn't know it applied to templates other than lambdas. > > > > Thank you for your explanation. > > It applies to templates, lambdas (which basically are templates) an

Proper desctructor for an class containing dynamic array of objects

2019-06-13 Thread Mike via Digitalmars-d-learn
Hi, my name is Mike and I'm new to D (coming from a Javabackground) and for fun I'm trying to learn D now. I created a simple class class Block { int a, b; this() {} } And now I have a dynamic array of objects of this class in another class: class Foo { Block[] array = new

Re: Proper desctructor for an class containing dynamic array of objects

2019-06-13 Thread kinke via Digitalmars-d-learn
On Thursday, 13 June 2019 at 16:08:52 UTC, Mike wrote: or nothing of that at all because the garbage collecter collects it, if the reference to Foo is set to null? That. [The init loop can be shortened to `foreach (ref b; array) b = new Block();`.]

Re: Proper desctructor for an class containing dynamic array of objects

2019-06-13 Thread Rumbu via Digitalmars-d-learn
On Thursday, 13 June 2019 at 16:08:52 UTC, Mike wrote: How would a proper destructor of class Foo look like? Is it enough to set "array" to null? Or do I have to set every element of the array to null and then the array, or nothing of that at all because the garbage collecter collects it, if th

Scope exit bug?

2019-06-13 Thread Amex via Digitalmars-d-learn
void foo() { void bar() { foo; } switch case: scope(exit) { do } break bar; } fails to execute do void foo() { void bar() { foo; } switch case: bar; do return; bar; } does work... yet there is no difference except the scope exit. In my code it is if do is