Delayed string interpolation

H

Hal Fulton

I just wanted to make sure people don't overlook the
obvious:


def interp(x,y)
"The sum of #{x} and #{y} is #{x+y}"
end

str = interp(210,27) # "The sum of 210 and 27 is 237"


Perhaps there are cases where this is no good though.


Hal
 
N

Navindra Umanee

Hal Fulton said:
def interp(x,y)
"The sum of #{x} and #{y} is #{x+y}"
end

str = interp(210,27) # "The sum of 210 and 27 is 237"

Unless I'm mistaken, this recomputes the whole string every time
interp is called. I wanted to compute the common parts of the string,
cache it somewhere, and then compute the rest in another context.

Hence, a 2-step interpolation.

Cheers,
Navin.
 
H

Hal Fulton

Navindra said:
Unless I'm mistaken, this recomputes the whole string every time
interp is called. I wanted to compute the common parts of the string,
cache it somewhere, and then compute the rest in another context.

Hence, a 2-step interpolation.

Yes, I'm sure there are some efficiency concerns. I've never
measured the performance in a case like this.

I wonder if it would be worthwhile to expose the internal
method which does interpolation? I've thought of this in
the past, but never seriously enough for an RCR. I think
that would be "prettier" than an explicit eval.

It would, of course, either have to operate in the current
binding or have a binding passed in.


Hal
 
W

William James

Hal said:
I just wanted to make sure people don't overlook the
obvious:


def interp(x,y)
"The sum of #{x} and #{y} is #{x+y}"
end

str = interp(210,27) # "The sum of 210 and 27 is 237"


Perhaps there are cases where this is no good though.


Hal

* Patchworkstr = Struct.new( "Patchworkstring",:start,:middle,:end)
* sentence = Patchworkstr.new( "There are " )
*
* sentence.end = " solutions."
* n = 3**3
* sentence["middle"] = n
*
* puts sentence.to_a.join

....prints
There are 27 solutions.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top