Git Product home page Git Product logo

Comments (4)

jemmaissroff avatar jemmaissroff commented on June 3, 2024 1

Does that make sense?

Ah yes! So just to confirm my understanding. The order of the private and memo_wise call will impact what we do internally. But in both cases we'll ultimately have a private memoized method.

In this case, you're totally right, let's remove it!

from memo_wise.

JacobEvelyn avatar JacobEvelyn commented on June 3, 2024

@jemmaissroff I'm not sure I totally follow the last item in the checklist:

Document that changing method visibility must occur before memoizing methods in order to preserve visibility. (See #59 for more detail.)

If I do:

memo_wise :foo
private :foo

or

private :foo
memo_wise :foo

isn't the result of both of these the same, i.e. foo will be both memoized and private?

from memo_wise.

jemmaissroff avatar jemmaissroff commented on June 3, 2024

@JacobEvelyn re:

isn't the result of both of these the same, i.e. foo will be both memoized and private?
Yes, you're actually totally right. I just ran the tests locally switching the order. But can you explain to me how that's working?

My assumption was that if we made the method private after memoizing it, it wouldn't be private when we check private_method_defined? within #memo_wise. Can you explain to me why that doesn't matter?

from memo_wise.

JacobEvelyn avatar JacobEvelyn commented on June 3, 2024

Can you explain to me why that doesn't matter?

Sure! In this case:

memo_wise :foo
private :foo

We're first creating a new public method foo, which wraps the behavior of the old (now-private) method foo. (You're right that neither is private at the time of the private_method_defined? check.) But then on the next line when we call private :foo we're making our new memoized method private.

Does that make sense?

from memo_wise.

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.