dlang.org/spec/function.html#pure-functions example
Paul
phshaffer at gmail.com
Sun Apr 12 00:54:33 UTC 2026
On Sunday, 22 October 2023 at 00:50:33 UTC, Jonathan M Davis
wrote:
>>
>> Can I say in the general sense that when the word static is
>> used it means that something is defined/declared at compile
>> time?
>
> Hmmm. It seems like my message got eaten. So, I'll write it out
> again.
>
> In any case, no, in general, static really doesn't have much to
> with runtime vs compile time. It means different things in
> different contexts. Off the top of my head, the only contexts
> where static specifically has anything to do with compile time
> are with static if and static foreach, in which case, those
> constructs become compile-time constructs instead of runtime
> constructos. Other contexts have very different meanings for
> static.
>
> For instance, a static member function is a member function
> that doesn't have an implicit this reference/pointer and thus
> is pretty much just a function that's scoped to the
> class/struct rather than being a function that operates on
> instances of that class or struct.
>
> On the other hand, static member variables are variables which
> are associated with the class or struct and not with an
> instance of that class or struct. So, there is only one
> instance of that variable for all objects of that class or
> struct on a single thread, as opposed to non-static member
> variables which are specific to each object.
>
> static in functions has similar but different meanings. On a
> nested function, it makes it so that the function has no
> implicit parameter which is a reference to the context of the
> outer function, meaning that it's pretty much just a function
> within another function, whereas a non-static nested function
> actually has access to the outer function's scope and thus can
> access the variables in the outer scope.
>
> On the other hand, a static variable within a function is a
> variable where there is only one instance of that variable for
> every call to that function on a single thread, as opposed to
> normal function variables which get a new instance every time
> that the function is called.
>
> And there are other meanings for static in other contexts.
> There are similarities between them, but if there is a
> definition that can be given for what static means which covers
> all of those contexts (and there may be - C manages that in
> spite of the fact that static means very different things in
> different contexts there too), it's not an obvious definition.
> You mostly just have to learn what static means in each context
> that it's used rather than memorizing a general definition for
> it that can be applied in each context.
>
> - Jonathan M Davis
Very helpful. Thanks Jonathan.
Wow. Sorry. I just found this unsent draft!
More information about the Digitalmars-d-learn
mailing list