Git Product home page Git Product logo

Comments (6)

zeux avatar zeux commented on July 17, 2024

Vectors need to implement the __index meta method that supports xyz

from luau.

petrihakkinen avatar petrihakkinen commented on July 17, 2024

This is using the built-in vector from master.

Isn't it strange that these work:

a = vec(1, 2, 3); print(a.x)  -- prints 1

a = vec(1, 2, 3)
a["x"] -- prints 1

But this doesn't?

a = vec(1, 2, 3)
a.x -- error: attempt to index vector with 'x'

(both examples work correctly when running a file, but not from REPL)

from luau.

zeux avatar zeux commented on July 17, 2024

No, that's expected. You must define an __index in the metatable, the VM bypass is just an optimization. If you don't define it other cases when the indexing code doesn't use the interpreter won't work eg v["x"..""]

from luau.

zeux avatar zeux commented on July 17, 2024

Maybe there's an argument for adding this bypass to luaV_gettable so that you can use vectors without defining a metatable; unsure if any other corners like this exist atm.

from luau.

petrihakkinen avatar petrihakkinen commented on July 17, 2024

Ah, okay. So there's a slow path and fast path for vector indexing even with built-in vectors. I'll have to make sure we always stay on the fast path. Thanks!

from luau.

Gskartwii avatar Gskartwii commented on July 17, 2024

Maybe there's an argument for adding this bypass to luaV_gettable so that you can use vectors without defining a metatable; unsure if any other corners like this exist atm.

I've just hit this, and I would support adding the in the bypass to luaV_gettable. It feels quite unintuitive that GETTABLEKS yields a different result compared to GETTABLE.

from luau.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.