Не включайте функцию ramdajs - PullRequest
       37

Не включайте функцию ramdajs

0 голосов
/ 30 сентября 2018

У меня следующая структура данных:

const cluster = {
    processes: [
        { color: 'test', x: 0, y: 0 },
        ...
    ],
};

А теперь я хочу создать функцию со следующей записью:

// getProcess :: (Cluster, number) -> Process
getProcess(cluster, 0);
// => { color: 'test', x: 0, y: 0 }

Хорошо, я пытаюсь использовать ramdajs для этого:

const getProcess = R.compose(R.flip(R.nth), R.prop('processes'));

Это нормально работает для getProcess(cluster)(0), но для getProcess(cluster, 0) возвращает функцию.

Есть ли способ решить эту проблему с помощью ramda или может быть более правильная реализация?

1 Ответ

0 голосов
/ 30 сентября 2018

Вы можете использовать R.uncurryN для достижения этой цели, которая просто принимает количество аргументов, которые вы хотите откатить вместе с функцией карри.

const getProcess = R.uncurryN(2, R.compose(R.flip(R.nth), R.prop('processes')));

Это работает со всеми каррифункции, независимо от того, созданы ли они Рамдой или явно как следующие.

R.uncurryN(2, x => y => x + y)

Альтернативный способ написать это кратко - с помощью R.useWith, хотя я склоняюсь к тому, что использование useWith менее читабельно, чем альтернативы..

const getProcess = R.useWith(R.nth, [R.identity, R.prop('processes')])
getProcess(0, cluster)
...