Skull giver
link
fedilink
1321d

I dint know many OO languages that don’t have a useless toString on string types. It mostly seems to be a result of using a generic string-able type that’s implemented to add toString() in a standardised way.

Calling toString on a string is practically a no-op anyway.

@hydroptic@sopuli.xyz
creator
link
fedilink
4
edit-2
21d

I dint know many OO languages that don’t have a useless toString on string types.

Well, that’s just going to be one of those “it is what it is” things in an OO language if your base class has a toString()-equivalent. Sure, it’s probably useless for a string, but if everything’s an object and inherits from some top-level Object class with a toString() method, then you’re going to get a toString() method in strings too. You’re going to get a toString() in everything; in JS even functions have a toString() (the output of which depends on the implementation):

In a dynamically typed language, if you know that everything can be turned into a string with toString() (or the like), then you can just call that method on any value you have and not have to worry about whether it’ll hurl at runtime because eg. Strings don’t have a toString because it’d technically be useless.

Skull giver
link
fedilink
221d

Same is true for JavaScript’s namesake, Java; Object has a toString method, so everything but primitives (int, long, etc.) must have a toString method (and primitives sort of have one too in a roundabout way).

I think JavaScript’s toString also serves another function, namely to have some form of fallback when doing operations on what should be incompatible types. [] + "", for instance; JavaScript will call toString() to do type conversion when the nearest matching type is a String.

@TCB13@lemmy.world
link
fedilink
English
121d

I dint know many OO languages that don’t have a useless toString on string types

Okay, fair enough. Guess I never found about it because I never had to do it… JS also allows for "test string".toString() directly, not sure how it goes in other languages.

It’s also incredibly useful as a failsafe in a helper method where you need the argument to be a string but someone might pass in something that is sort of a string. Lets you be a little more flexible in how your method gets called

Skull giver
link
fedilink
English
4
edit-2
21d

Java would be "test string".toString(). C# has "test string".ToString(). Python has str("test string") (as str() is Python’s toString equivalent). Rust has String::from("test string").to_string().

That’s just from the top of my head. I’m sure there’s more.

Edit: actually, I think Rust’s to_string() may not be entirely useless, I think it may be used as a consuming placeholder for clone()? Not sure how that would be useful, but it’s not a complete no-op at least.

Create a post

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

  • Posts must be relevant to programming, programmers, or computer science.
  • No NSFW content.
  • Jokes must be in good taste. No hate speech, bigotry, etc.
  • 1 user online
  • 120 users / day
  • 257 users / week
  • 744 users / month
  • 3.72K users / 6 months
  • 1 subscriber
  • 1.48K Posts
  • 32.5K Comments
  • Modlog