Comments (4)
I would say the same for predicates— that is, with methods like Filter(slice []T, func(T, int) bool)
, I am far more likely to be using them in situations where I have a func(T) bool
; the index is almost always irrelevant, and it's extremely annoying to have to keep writing inline anonymous wrapper funcs.
from lo.
Is this feature currently being considered?
from lo.
this would be surprisingly useful
from lo.
First of all, I'm very pleased with the functionality provided by lo
package. It's great, many kudos to the author and contributors.
Despite the fact, that having an index argument increases the flexibility of functions and makes them truly general-purpose functions, I can share that based on my personal experience of lo
package usage I have never ever used index
argument. Literally, never. It's always func(item T, _ int) R
.
Since the package is on v1.* and needs to maintain backward compatibility, it's quite hard to change it. What I suggest is releasing v2 and changing the default iterate signature from func(item T, index int) R
to func(item T) R
and creating additional functions like MapI
, ForEachI` which will accept functions with iterate. I'm not sure if it needs a separate issue, @samber what do you think? Can you please share your thoughts on that?
UPDATE:
Also, an important example. This signature stops me from using tons of already existing functions like strings.ToUpper
, and instead of this simple line of code lo.Map(strs, strings.ToUpper)
I need to write this:
lo.Map(strs, func(s string, _ int) string {
return strings.ToUpper(s)
}
At least it makes sense for me to implement some methods like lo.MapNoI
in the current v1.* branch which will handle such signatures.
from lo.
Related Issues (20)
- Proposal: lo.OrElse() HOT 2
- tree shaking / dead code elimination HOT 2
- Add lo.MapByPtr HOT 3
- Any chance for a typesafe func piping utility in lo?
- Add filterNotNill function HOT 2
- Why Async doesn't close a chan? HOT 1
- propose: Add First() on slice, empty to return nil HOT 2
- Chunk has memory leak
- Slight performance boost on PickByKeys / OmitByKeys
- Add .Get() to Tuple family as alias for .Unpack() to match samber/mo
- Keys: accept multiple maps (vaargs) HOT 5
- Cancelable concurrent tasks
- Proposal: considering a new type of Group: a key mapper to a bunch of values, for extend map structure
- Proposal: Use generics for underling types
- propose: Add distinctByKey() on slice,return slince
- Suggestion: Add a sorting method by a certain type to slice and return the slice
- Error: could not resolve parametric type of accumulator: could not resolve interface type
- Proposal: Helpers for combine function and tuple HOT 1
- TYPO: Maybe a typo in Readme.md HOT 4
- proposal: Another PickByKeys that ouputs a slice
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 lo.