Project

General

Profile

Actions

Feature #8573

closed

Add String#format method(not an alias of String#%)

Added by bozhidar (Bozhidar Batsov) over 10 years ago. Updated almost 6 years ago.

Status:
Feedback
Assignee:
-
Target version:
-
[ruby-core:55682]

Description

I think it'd be great if String included a method similar to % that accepts variable number of arguments (like sprintf). This is trivial to implement as you're certainly aware.

Here's one implementation suggestion:

class String
def format(*args)
super(self, *(args.flatten))
end
end

This would make the new method behave both like sprintf/format and String#%. I think this minor improvement would definitely be in the spirit of making more programmers happy :-)

Here a bit more on the topic - http://batsov.com/articles/2013/06/27/the-elements-of-style-in-ruby-number-2-favor-sprintf-format-over-string-number-percent/

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

Do you mean this?

def format(*args)
  sprintf(self, *args)
end

or

def format(*args)
  self % args
end

Updated by naruse (Yui NARUSE) over 10 years ago

  • Status changed from Open to Feedback
  • Priority changed from 3 to Normal
  • Target version changed from 2.1.0 to 2.6

Show concrete use case.

Actions #3

Updated by naruse (Yui NARUSE) about 6 years ago

  • Target version deleted (2.6)

Updated by bozhidar (Bozhidar Batsov) almost 6 years ago

naruse (Yui NARUSE) wrote:

Show concrete use case.

How about simply:

"Hello, %s %s!".format("Mr.", "Bond")

Updated by bozhidar (Bozhidar Batsov) almost 6 years ago

nobu (Nobuyoshi Nakada) wrote:

Do you mean this?

def format(*args)
  sprintf(self, *args)
end

or

def format(*args)
  self % args
end

I'd prefer something implemented in terms of sprintf.

Updated by shyouhei (Shyouhei Urabe) almost 6 years ago

bozhidar (Bozhidar Batsov) wrote:

naruse (Yui NARUSE) wrote:

Show concrete use case.

How about simply:

"Hello, %s %s!".format("Mr.", "Bond")

That's too simple. What we need is how the requested feature improves the situation. What's wrong with the status-quo? and how is that relaxed using String#format?

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0