3 ms·
the only issue is i'd like to differentiate between iterating arrays and objects at the syntax level. Coffeescript uses `in` for arrays and `of` for objects, bu
by phpnode 12y ago
the only issue is i'd like to differentiate between iterating arrays and objects at the syntax level. Coffeescript uses `in` for arrays and `of` for objects, but I agree that becomes confusing. Open to other suggestions!
- Excavator 12y agoThat's a though one. I know I can't think of any that aren't either verbose or nondescript. But if Coffescript can walk away with its choice then I don't think you'll have anything to worry about.
- couchand 12y agoI've been spending some time thinking about CoffeeScript's choice for `in` and `of` and I think I have the answer: they should be more regular. One (probably `of`) should be used for the keys/indexes and the other (probably `in`) should be used for contents. These are legal CoffeeScript examples: for key, value of object if key of object for value in array if value in array for index, value of array if index of array The one that's missing is: for value in object if value in object
- phpnode 12y agoThe issue with coffeescript is that it uses the opposite syntax to JS - `in` for arrays instead of objects. ES6 introduces the `of` keyword for real iterators so i don't really want to use that for either of them. It's tricky. There are other options but they're verbose every element as key, value from arr { console.log(key, value); } every property as key, value from obj { console.log(key, value); }
- Excavator 12y agoThoughts on this? every [key, value] from arr { console.log(key, value); } every {key, value} from obj { console.log(key, value); } every [key] from arr { console.log(key); } every {_, value} from obj { console.log(value); } Looks a bit cramped to me but I get the impression that array comprehension is one of the major reasons that people use Coffeescript, so perhaps it's not too much trouble? There's also the issue with some fonts making it hard to differentiate between { and [ but it's an idea that might be worth to think about at least.
- phpnode 12y agoI quite like this suggestion. If we flip the key, value around to make it inline with what forEach etc do, then we don't need the placeholder for iterating without the key: fast-each [value] from arr { } fast-each {value} from obj { } fast-each [value, key] from arr { } fast-each {value, key} from obj { } The disadvantage is that this looks like array comprehension but isn't. Alternative: fast-properties key, value from obj { } fast-elements index, value from arr { } fast-properties value from obj { } fast-elements value from arr { }