3 ms·
Ruby has a `NilClass` and the best/worst part of it is the to_s is "", to_i is 0, to_f is 0.0, to_a is [], to_h is {} It's incredibly clean and convenient unti
by mbb70 2y ago
Ruby has a `NilClass` and the best/worst part of it is the to_s is "", to_i is 0, to_f is 0.0, to_a is [], to_h is {}
It's incredibly clean and convenient until you wake up one morning and have no idea what is happening in your code
- falcor84 2y agoIndeed. One's greatest strength is also their greatest weakness.
- Terr_ 2y ago> the to_s is "", to_i is 0, to_f is 0.0, to_a is [], to_h is {} I somehow can't help reading that as some sort of high school sports-cheer: "Gimme an S to the quote to the I to the oh to the F to the zero! Goooo Rubies!"
- cmiller1 2y agoOf course since it's Ruby you can just monkey patch those to_s methods to do whatever the hell you want, confounding anyone else working on your codebase. I love using Ruby when I'm the only one who will ever have to look at or touch it.
- gls2ro 2y agoI dont think there is something wrong with that once you think about what is a Null Element (or identity) in a group that is represented by a set of elements and a function: Integer, + => 0 Float, + => 0.0 Array, add => [] Hash, merge => {} and so on. I think maybe we can debate the operations/functions, but they make sense. For Integer in some ways you can define almost all other operations that you commonly use based on the addition. So while nil is an object when trying to find a representation in other group I find it logical or expected. Also Ruby will not automatically try to coerce nil when not asked to do so like for example 0 + nil will throw an error.
- eru 2y agoIntegers support both addition and multiplication and taking maximum and minimums, and a few other semi-group operations. Do you want to define different Null elements for all of them?
- gls2ro 2y agoNo, I don't want to define a representation for Null to all possible combinations of a set and a function/operation. That can be done by each developer if they see it fit and of the operations they want to have this. But, for me, it makes sense to have a default representation for Null (that it is not automatically coerced—only if the developer explicitly asks for it) for one of the most common operations in that specific group.
- goatlover 2y agoThose conversions make sense though. They all mean empty or null. It's what I would expect from a language like Ruby.
- tubthumper8 2y agoInteger 0 means empty with respect to a particular operation (addition) but is not empty with respect to all operations (ex. multiplication)