Skip to content

Comment on Wren: A classy little scripting languageparent

Comments

So it does have:

    class A {
      construct new () {}
      thing(obj) {
         …
      }
    }

    class B is A {
       construct new () {}
    }

    B.new().thing(obj)

I’ll need to test this as this is what I want from my scripting language. If this works than wren will replace my Lua janky scripting.

Trying to update a field from a subclass and print the results doesn’t work.

    class A {
      name {
        _name
      }
      name=(value){
        _name=value
      }
      construct new () {
        _name = "hello"
      }
      thing() {
        System.print(name)
      }
    }

    class B is A {
      construct new () {}
      update(name){
        super.name = name
        return this
      }
    }

    var b = B.new()
    b.update("world").thing()

If you change System.print(name) to System.print(_name) it works but it doesn’t when using the getter. You get null when System.print(name) is called.

Same if you use this.name

Your `name` getter isn't working properly. Weirdly, Wren's implicit returns only work for functions written on a single line.

The getter either needs to be (exactly) `name { _name }` or it needs to explicitly `return _name`.

https://wren.io/functions.html#returning-values

That was it. Nuance in the “no new line after…” parsing. Thanks, it works now. Awesome!

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.