使用函数式编程范式迭代链表
Iterating over Linked List using Functional programming paradigm
我的项目中有一个简单的链表。该项目使用 underscore.js。我正在尝试想出一种使用函数式编程技术遍历链表的方法。目前,我有以下内容:
while(cell.next) {
nxt = cell.next;
//check if next cell fulfills some condition. If condition is met,
// loop breaks
}
有没有办法以功能方式实现上述内容(使用 underscore.js 库)?
提前致谢。
不确定下划线是如何影响的。获得函数式样式代码似乎不是必需的。
function doCell(c) {
if (!c || your_condition_is_met)
return c;
return doCell(c.next);
}
var result = doCell(cell);
不确定结果应该是什么,所以我只是在满足条件的情况下返回当前单元格。
如果你愿意,你可以将其中的一些抽象成一个可重用的函数。
function nextWhile(v, callback) {
if (!v || callback(v))
return v;
return nextWhile(v.next, callback);
}
然后像这样使用它:
var result = nextWhile(cell, function(cell) {
return your_condition_is_met;
});
这让您可以创建可重复使用的函数。
function cell_is_something(cell) {
return your_condition_is_met;
}
清理并记录您的代码。
var result = nextWhile(cell, cell_is_something);
我的项目中有一个简单的链表。该项目使用 underscore.js。我正在尝试想出一种使用函数式编程技术遍历链表的方法。目前,我有以下内容:
while(cell.next) {
nxt = cell.next;
//check if next cell fulfills some condition. If condition is met,
// loop breaks
}
有没有办法以功能方式实现上述内容(使用 underscore.js 库)?
提前致谢。
不确定下划线是如何影响的。获得函数式样式代码似乎不是必需的。
function doCell(c) {
if (!c || your_condition_is_met)
return c;
return doCell(c.next);
}
var result = doCell(cell);
不确定结果应该是什么,所以我只是在满足条件的情况下返回当前单元格。
如果你愿意,你可以将其中的一些抽象成一个可重用的函数。
function nextWhile(v, callback) {
if (!v || callback(v))
return v;
return nextWhile(v.next, callback);
}
然后像这样使用它:
var result = nextWhile(cell, function(cell) {
return your_condition_is_met;
});
这让您可以创建可重复使用的函数。
function cell_is_something(cell) {
return your_condition_is_met;
}
清理并记录您的代码。
var result = nextWhile(cell, cell_is_something);