簡體   English   中英

我如何用 ramda 編寫該函數?

[英]How i can compose that function with ramda?

我如何以 ramda 方式創建 addGreeting 函數?

我嘗試創建一個函數,但它認為這不是最佳解決方案。

const animal = {};

const addName = R.assoc('name');

const addGreeting = (transformString) => (animal) => {
  return R.assoc('greeting', transformString(animal), animal);
};

const createAnimal = 
 R.pipe(
   addName('Igor'),
   addGreeting(animal => `Hello ${animal.name}`),
 );

createAnimal(animal);

我希望用 ramda 編寫 addGreeting 函數。


UPD:我的解決方案

const addName = R.assoc('name');

const addGreeting = 
  (transformString) => 
    R.converge(
      R.merge,
      [
        R.applySpec({
          greeting: transformString
        }),
        R.defaultTo({})
      ]
    )

const createAnimal = 
 R.pipe(
   addName('Igor'),
   addGreeting(animal => `Hello ${animal.name}`),
 );

createAnimal({});

你可以使用R.curry創建addGreetingR.applySpec來創建動物創建函數:

 const { curry, applySpec, identity } = R const addGreeting = curry((transformString, name) => transformString(name)); const createAnimal = applySpec({ name: identity, greeting: addGreeting(name => `Hello ${name}`) }) console.log(createAnimal('Igor'));
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js"></script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM