Comments (4)
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.
@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.
@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.
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)
- Explore using Structs instead of Arrays for hash keys HOT 1
- Investigate whether we can speed up tests
- Method arguments with specific names can be overwritten
- Create easier way to compare changes against current `MemoWise` version HOT 1
- Memowise v1.2.0 regression with Rails concerns HOT 8
- Broken handling of inheritance after "Optimize zero-argument methods" HOT 4
- Avoid defining methods unless needed
- Use squiggly heredocs everywhere
- Multiple composition inheritance bug HOT 8
- Error memo_wising in subclass with included module HOT 2
- Tidy CHANGELOG
- Use method-specific instance variables for methods that take arguments HOT 1
- Use nested hashes instead of arrays for methods with multiple required arguments HOT 2
- Array data structure leading to multiple bugs
- Release 1.4.0 breaks simple inheritance HOT 4
- Cannot use memoized class level method in sub classes HOT 5
- Fix thread safety tests which are non-deterministic on TruffleRuby
- SystemStackError when memoized method calls memoized super method HOT 2
- memo_wise raises error when memoizing a method in a module that's included in a class that overrides `initialize` HOT 1
- Sorbet compatibility
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from memo_wise.