Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
520 views
in Technique[技术] by (71.8m points)

javascript function rules with multiple parameter braces

How would you write a function that is like this

f()()

f('it') == fit
f()('x') == fox

I have

function f(s){
  return "f"+s;
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I had to discern what you're looking for not only from your question, but also from your comments. It looks like every string begins with 'f', and each empty bracket-pair appends an 'o'. Finally, a non-empty bracket-pair appends its argument.

I actually think this is a cool metaprogramming challenge.

This should work:

let f = (str, depth=0) => str
  ? `f${'o'.repeat(depth)}${str}` // If given param, terminate
  : str => f(str, depth + 1);     // If no param, return func

// "fit"
console.log(f('it'));

// "fox"
console.log(f()('x'));

// "fortress"
console.log(f()('rtress'));

// "football"
console.log(f()()('tball'));

// "foooooool!!!"
console.log(f()()()()()()()('l!!!'));

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...