【发布时间】:2012-06-20 09:29:17
【问题描述】:
我很好奇我的游戏在函数式而不是 OOP 中会是什么样子。
以下是 Node.js 中的核心代码行:
if (!player.owns(flag) && player.near(flag) && flag.isUnlocked()) {
player.capture(flag);
}
我的猜测是,它可能看起来像这样:
var canCapture = [not(owns), isNear, canUnlock].every(function(cond) {
return cond(playerData, flagData);
});
if(canCapture) {
// how to capture?
}
但不确定,因为没有经验丰富的函数式编码器。我对与主题相关的每个答案都感兴趣(甚至可以是其他编程风格)。
【问题讨论】:
-
我不确定 OOP 部分在您的代码中的什么位置?甚至你在这个术语下的理解。
-
您拥有带有方法的 Player 类实例:“owns”、“near”、“capture”。您还有带有“isUnlocked”方法的 Flag 类实例。
-
但这些对象仍会保留。所以它们不会从 OOP 转换为函数式......你的问题实际上是:我如何编写一个
All谓词,我可以在其中提供一组函数/值,它应该返回true什么时候都是true? -
是的,对象将保留,而是作为通用数据容器({lat:33.33, lon:33.33, name:"Rob"})而不是专用类实例。功能风格是否拒绝使用对象?我只是好奇如何编写这样的游戏规则“如果玩家没有旗帜并且旗帜在他附近解锁,那么他会自动捕获这面旗帜。”在函数式编程中。这有意义吗?
标签: javascript oop node.js functional-programming