mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-10 21:58:48 +01:00
Make constructors just methods.
* Eliminate "new" reserved word. * Allow "this" before a method definition to define a constructor. * Only create a default constructor for classes that don't define one.
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
import "cthulu" for Cthulu
|
||||
|
||||
class Lovecraft {
|
||||
say { (new Cthulu).message }
|
||||
say() { Cthulu.new().message }
|
||||
}
|
||||
|
||||
IO.print((new Lovecraft).say)
|
||||
IO.print(Lovecraft.new().say())
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
// Class definition with a toplevel name.
|
||||
class SyntaxExample {
|
||||
// Constructor
|
||||
new {
|
||||
this new() {
|
||||
// Top-level name `IO`
|
||||
IO.print("I am a constructor!")
|
||||
|
||||
@ -26,7 +26,7 @@ class SyntaxExample {
|
||||
}
|
||||
|
||||
// Constructor with arguments
|
||||
new(a, b) {
|
||||
this constructor(a, b) {
|
||||
print(a, b)
|
||||
field = a
|
||||
}
|
||||
@ -82,14 +82,11 @@ class SyntaxExample {
|
||||
|
||||
// `class`, `is`
|
||||
class ReservedWords is SyntaxExample {
|
||||
// `new`
|
||||
new {
|
||||
reserved {
|
||||
// `super`, `true`, `false`
|
||||
super(true, false)
|
||||
// `this`
|
||||
this.foo
|
||||
// `new`
|
||||
new SyntaxExample
|
||||
}
|
||||
|
||||
foo {
|
||||
|
||||
Reference in New Issue
Block a user