Hacker News new | ask | show | jobs
by mpartel 2346 days ago
It's always a method in Ruby because you can only access @properties in method implementations.

What you're describing holds in e.g. Scala, where it's by design: they feel it should be an easy-to-change implementation detail whether a name is backed by a direct field access or a method. IMO that's a reasonable stance in a functional(ish) world.

2 comments

@vars are data members, not properties.

“Properties”, in most languages that have them, are an way to make method access look like access to data members (no parens, getters just use the name, setters use name + = with the new value on the right of the = instead of in parameter position.)

But Scala still differentiates between `def shouldBePure: Foo` and `def probablyHasSideEffects(): Bar`.