processing / processing/libprocessing
Naming collision between Processing `map()` and Python `map()`
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Rust
- Sterne
- 69
- Forks
- 14
- Ø Merge
- 15 T. 22 Std.
- Gemergte PRs (30 T.)
- 3
Beschreibung
Trying to port the array example (See issue: Port Basics / Arrays / Array #3) and I'm running into this error:
coswave = [abs(cos(map(i, 0, width, 0, pi))) for i in range(width)]
~~~^^^^^^^^^^^^^^^^^^^^
TypeError: 'int' object is not iterable
I suppose this is because Python has its own map() function (a list transformation) different from the map() function in Processing (a linear interpolation function).
Processing.py handles this by wrapping map() and dispatching based on the arguments (see source code). It uses the Processing version when called with five numeric arguments, and otherwise falls back to Python’s built-in. Note: the same approach is used for filter().
By contrast, py5 avoids the conflict by renaming the function to remap() instead.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem im Issue beschriebenen Array-Beispiel und der map()-Kollision und vergleiche dann den referenzierten processing.py-Dispatch in PAppletJythonDriver.java mit der remap()-API von py5. Bestimme, welches Benennungs- oder Dispatch-Verhalten libprocessing übernehmen sollte, und berücksichtige die Auswirkungen auf die Kompatibilität mit den in Python integrierten Funktionen. Als erledigt gilt die Aufgabe, wenn die gewählte API das Beispiel ohne Mehrdeutigkeit auflöst und entsprechend dokumentiert oder getestet ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python, rust
- Bereich
- api
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 38/100