Am I being naive or could this just be written in user space? 

Sent from my iPhone

> On 12 Aug 2015, at 15:31, Edwin Reynoso <[email protected]> wrote:
> 
> Yes of course, still requires 1.Destructuring, and making a function for each 
> type of string to return. Defeats the purpose.
> 
> I'd have to make different functions for each template:
> 
> ```JS
> const yearTemplate = ({ year }) => `This year is ${year}`;
> 
> const ageTemplate = ({ age}) => `I'm ${age} yrs old`;
> ```
> 
> Compare to:
> 
> ```JS
> let yearSentence = String.substitute({ year: 2015}, `This year is ${year}`);
> let ageSentence = String.substitute({ age:100 }, `I'm ${age} yrs old`);
> ```
> 
>> On Wed, Aug 12, 2015 at 10:19 AM, Claude Pache <[email protected]> 
>> wrote:
>> 
>> > Le 12 août 2015 à 15:41, Edwin Reynoso <[email protected]> a écrit :
>> >
>> > Could we make the following possible, I can't seem to think of a way to do 
>> > it, since template literals are evaluated with the current scope, also 
>> > tried with `eval` but shouldn't even use that at all:
>> >
>> > ```JS
>> > String.substitute( { year: 2015 }, `This year is ${year}` ); // Returns 
>> > "This year is 2015"
>> > ```
>> >
>> > Yes I'm aware I could do the following:
>> >
>> > ```JS
>> > var obj = { year:2015 }
>> >
>> > `This year is ${obj.year}`
>> > ```
>> >
>> > The point is to get rid of the part where I reference `obj` all the time.
>> >
>> > I could just use destructuring:
>> >
>> > ```JS
>> > var { year } = { year: 2015 }
>> >
>> > `This year is ${year}`
>> > ```
>> >
>> > So yes destructuring takes care of most of this just fine, but the point 
>> > is to have a template literal evaluate as a pass reference and not right 
>> > away.
>> >
>> > You can't make your own function and pass in a template literal that's not 
>> > evaluated when passed as a reference, I'm not sure if anyone will actually 
>> > want this but me. Please let me know. Thanks
>> 
>> There is a general trick for deferring evaluation (of a template literal or 
>> of anything else): enclosing it in a function.
>> 
>> ```js
>> const myTemplate = ({ year }) => `This year is ${year}`
>> 
>> myTemplate({ year: 2015 })
>> ```
>> 
>> —Claude
> 
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to