Giter VIP home page Giter VIP logo

Comments (4)

eplusminus avatar eplusminus commented on July 20, 2024 1

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.

OladapoAjala avatar OladapoAjala commented on July 20, 2024

Is this feature currently being considered?

from lo.

thesiti92 avatar thesiti92 commented on July 20, 2024

this would be surprisingly useful

from lo.

GRbit avatar GRbit commented on July 20, 2024

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)

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.