Singleton: Difference between revisions

Added Wren
(Latitude language added)
(Added Wren)
Line 2,091:
}
}</lang>
 
=={{header|Wren}}==
Although it's possible to create a singleton in Wren, you have to rely on no one calling the 'private' constructor directly. This is because there is currently no way to create a private method in Wren - all you can do is to suffix the name with an underscore to indicate by convention it's for internal use only.
 
In practice, it's unlikely anyone would bother; they'd just create a class with static methods and/or fields only which is effectively a singleton as there's only ever a single instance of a static field.
<lang ecmascript>class Singleton {
// Returns the singleton. If it hasn't been created, creates it first.
static instance { __instance == null ? __instance = Singleton.new_() : __instance }
 
// Private constructor.
construct new_() {}
 
// instance method
speak() { System.print("I'm a singleton.") }
 
}
 
var s1 = Singleton.instance
var s2 = Singleton.instance
System.print("s1 and s2 are same object = %(Object.same(s1, s2))")
s1.speak() // call instance method</lang>
 
{{out}}
<pre>
s1 and s2 are same object = true
I'm a singleton.
</pre>
 
=={{header|zkl}}==
9,482

edits