English 中文(简体)
如何阐明基于方案拟定的 Java版。
原标题:How is a functional programming-based JavaScript app laid out?

我曾与node.js在聊天时合作(我知道,正本,但我认为这是良好学习项目), Underscore.js 提供了很多功能性方案拟定概念,对此感兴趣,因此,我想理解如何确定 Java语中的功能方案。

从我对职能方案编制的理解(可能是错误的)来看,整个想法是避免附带影响,因为副作用基本上具有职能,在职能之外更新另一个变数,例如:

var external;
function foo() {
   external =  bar ;
}
foo();

这会产生副作用,正确吗? 因此,作为一项一般规则,你希望避免全球范围的令人不安的变数。

因此,当你重新处理物体和什么事情时,如何工作? 例如,在很多时候,我有一个构造和一片一面方法,如:

var Foo = function(initVars) {
   this.init(initVars);
}

Foo.prototype.init = function(initVars) {
   this.bar1 = initVars[ bar1 ];
   this.bar2 = initVars[ bar2 ];
   //....
}

var myFoo = new Foo({ bar1 :  1 ,  bar2 :  2 });

因此,我的惯用方法有意造成副作用,但如何处理同样情况是什么样的实用方法?

而且,如果有人可以向我指出试图尽可能发挥作用的方案的“ Python”或“ Java”文本来源法,也将受到高度赞赏。 我感到,我同我一样接近于“得到它”,但我在那里不过了。 主要内容 我很想知道,功能性方案拟订如何与传统的办公室业务方案类别概念相配合(如果情况不同,则与后者脱离)。

最佳回答

请将此问题改为:

* A/63/150。

有许多有益的联系,包括:

现在,我认为。 很多人 ,可能是因为其辛塔克斯像其他大多数语文一样(Lsp/Haskell/OCaml看完全不同)。 Javacast is not Object-Orient, it is actual a prototype-based Language 。 它没有班级或传统遗产,因此实际上与 Java或C++比较。

贾瓦文比李普文更好;它有关闭和头等功能。 利用这些技术,你可以创造其他实用的方案拟订技术,例如部分应用(采购)。

请举一个例子(使用<代码>sys.puts,从Node.js中引出):

var external;
function foo() {
    external = Math.random() * 1000;
}
foo();

sys.puts(external);

为了消除全球副作用,我们可以结束:

(function() {
    var external;
    function foo() {
        external = Math.random() * 1000;
    }
    foo();

    sys.puts(external);
})();

通知说,我们实际上可以在范围外与<条码>外部或<条码>做任何事情。 他们在自己的封闭状态中完全清醒,这是不可想象的。

现在,删除<代码>外部。 副作用:

(function() {
    function foo() {
        return Math.random() * 1000;
    }

    sys.puts(foo());
})();

最后,这个例子并非纯粹功能的,因为它是can t的,使用随机数字从全球国家(获得种子)读到,印刷到智利是副作用。

我还要指出,把功能性方案拟订与目标混为一谈是完全正确的。 例如:

var Square = function(x, y, w, h) {
   this.x = x;
   this.y = y;
   this.w = w;
   this.h = h;
};

function getArea(square) {
    return square.w * square.h;
}

function sum(values) {
    var total = 0;

    values.forEach(function(value) {
        total += value;
    });

    return total;
}

sys.puts(sum([new Square(0, 0, 10, 10), new Square(5, 2, 30, 50), new Square(100, 40, 20, 19)].map(function(square) {
    return getArea(square);
})));

如你所知,使用实用语言的物体可被罚款。 有些人甚至把财产清单列为可视为物体。

用功能方式使用物体的真正骗局是,确保你不会依赖其副作用,而是将物体视为不可改变。 每当你想改变财产时,就很容易产生新细节的“new>>/em>标语,然后通过新细节(这通常是在Clojure和Haskell采用的方法)。

我坚信,功能方面在 Java中可能非常有用,但归根结底,你应当利用任何使守则更加可读和对你有用的东西。

问题回答

我想,。 应当适合你们的需要——它为职能规划提供了最重要的较高层次的职能,并且没有客户对人力部的操纵职能,而后者不需要服务器。 虽然我没有经验。

作为附带说明:IMHO功能方案的主要特征是:Referential transparency功能结果仅取决于其参数――功能不取决于其他物体的变化,除其结果价值外不作任何改动。 这使得方案正确性容易成为理由,并且对于实施可预测的多读(如果相关的话)非常有用。 尽管 Java本不是菲律宾中央银行的必备语言,但我预计可变的数据结构非常昂贵,可以使用。

因此,要指出两点:

  1. 在你的第一个例子中,你的变数不会漏入全球地区,而是应当如何做到,试图不宣布变数,即测试=数据将造成数据泄漏到全球地区。

  2. 你的第二个例子也是正确的,即只可在 F物体上宣布第1条和第2条。

牢记不过度使用假肢的情况,因为它适用于你制造的每个物体,这可能会因为你的物体是多么复杂而极为紧张。

如果你正在寻找一个评估发展框架,请看ExtJs 。 我个人认为,它完全适合你试图开发的模型。 只是想到的是,它们的许可证模式在大量投资之前是如何运作的。





相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签