Questions tagged «reactive»

1
为什么Akka被推销为反应性产品?演员模型有反应性吗?
据我了解,Actor模型和反应式编程是独立的概念。演员模型似乎并不是天生对我有反应。 但是,作为参与者模型实现的Akka框架被描述为反应性的: “ Java和Scala程序逻辑存在于轻量级的Actor对象中,该对象以反应方式发送和接收消息。” “我们反应活跃” 是滥用术语还是完全正确?是否有任何参与者模型实现(例如Erlang)已经做出反应?仅仅生成消息作为对其他消息的响应也被认为是反应性的吗? 对比方法的一些相关阅读: StackOverflow:RX vs消息队列,例如Rabbitmq或zeromq? CS.SE:函数式反应性编程和Actor模型如何相互关联? Lambda Ultimate:演员与反应对象

3
RxJava类Flowable是否可以合法地使用460个方法?
我刚刚开始使用RxJava,它是Java对ReactiveX的实现 (也称为Rx和Reactive Extensions)。一些真正让我吃惊的庞大规模RxJava的可流动类:它具有460点的方法! 公平起见: 有很多方法被重载,这大大增加了方法的总数。 也许应该拆分此类,但是我对RxJava的知识和理解非常有限。谁创造RxJava的人肯定是非常聪明的,他们可以大概是选择创建提供有效的参数可流动有这么多的方法。 另一方面: RxJava是Microsoft的Reactive Extensions的Java实现,甚至没有Flowable类,因此,这不是盲目移植现有类并用Java实现的情况。 [ 更新:斜体前一点是事实不正确:微软的可观察类,其中有超过400的方法,被用来作为RxJava的基础上可观察类,并且可流动相似,可观察到,但手柄背压的大量数据。因此,RxJava团队正在移植现有的类。这篇文章应该是挑战的原设计可观察到由微软而不是RxJava的类悬浮剂分类] RxJava已有3年多的历史了,因此这并不是由于缺乏对良好(SOLID)类设计原理的了解而导致代码被错误设计的示例(与Java的早期版本一样)。 对于像Flowable这样大的类,其设计本质上是错误的,但也许不是。这个SE问题的一个答案一个类方法的数量限制是多少?建议答案是“ 拥有所需的多种方法 ”。 显然,有些类无论其语言如何,都合法地需要大量方法来支持它们,因为它们不会轻易分解为更小的东西,并且它们具有大量的特征和属性。例如:字符串,颜色,电子表格单元格,数据库结果集和HTTP请求。对于类来说,也许有几十种方法来表示这些东西似乎并不合理。 但是Flowable是否真的需要460种方法,还是它是如此之大以至于它必然是不良类设计的一个例子? [需要明确的是:这个问题,特别是涉及RxJava的可流动类,而不是一般的神的对象。]

1
Free monad和Reactive Extensions如何关联?
我来自C#背景,其中LINQ演变为Rx.NET,但始终对FP感兴趣。在对Monad和F#中的一些辅助项目进行了一些介绍之后,我准备尝试进入下一个级别。 现在,经过来自Scala的人们关于免费monad的几次讨论,以及在Haskell或F#中的多次写作之后,我发现带有用于理解的口译员的语法与IObservable锁链非常相似。 在FRP中,您将根据较小的领域特定块(包括链中的副作用和失败)组成操作定义,并将应用程序建模为一组操作和副作用。在免费monad中,如果我理解正确,您可以通过将操作设为函子,然后使用coyoneda来进行操作。 将针头朝任何一种方法倾斜的两者之间有什么区别?定义服务或程序时的根本区别是什么?

2
实体组件系统对解耦/信息隐藏不是很可怕吗?
标题故意是双曲线的,可能只是我对模式的经验不足,但这是我的理由: 实现实体的“通常”或可以说是直接的方法是通过将它们实现为对象并将其子类化为常规行为。这导致了经典的问题“是或EvilTree的子类”。如果我们允许多重继承,就会出现钻石问题。我们可以代替拉的组合功能,并进一步向上层次导致神类,或者我们可以故意留出的行为在我们和类(使他们在极端情况下接口),以便可以实现本身-这会导致如果有一个代码复制。TreeEnemyTreeEnemyTreeEntityEvilTreeSomewhatEvilTree 实体组件系统试图通过将解决这一问题Tree和Enemy对象到不同的组件-比如Position,Health和AI-和执行系统,例如AISystem,根据AI决定改变一个Entitiy的位置。到目前为止,EvilTree还算不错,但是如果可以启动电源并造成损害该怎么办?首先,我们需要一个CollisionSystem和一个DamageSystem(我们可能已经有了这些)。CollisionSystem与进行通信的需求DamageSystem:每次两件事冲突时,CollisionSystem都会向发送一条消息,DamageSystem以便减少健康状况。损坏也会受到通电的影响,因此我们需要将其存储在某个地方。我们是否创建一个PowerupComponent附加到实体的新商品?但是然后DamageSystem需要知道一些它宁愿一无所知的东西-毕竟,有些东西会造成无法获得能量的伤害(例如Spike)。我们是否允许PowerupSystem修改StatComponent与该答案类似的用于损伤计算的?但是现在两个系统访问相同的数据。随着我们的游戏变得越来越复杂,它将变成无形的依赖图,其中组件在许多系统之间共享。在这一点上,我们可以使用全局静态变量并摆脱所有样板。 有解决此问题的有效方法吗?我曾经有过一个想法,就是让组件具有某些功能,例如,给StatComponent attack()它默认情况下只返回一个整数,但是可以在上电时进行组合: attack = getAttack compose powerupBy(20) compose powerdownBy(40) 这不能解决attack必须保存在多个系统访问的组件中的问题,但是如果我有足够的语言来支持它,至少我可以正确键入这些函数: // In StatComponent type Strength = PrePowerup | PostPowerup type Damage = Int type PrePowerup = Int type PostPowerup = Int attack: Strength = getAttack //default value, can be changed by systems getAttack: PrePowerup // these functions …

1
响应式编程和MVVM模式,用于管理GUI更新
响应式编程和MVVM是可以解决将域层与UI分离的问题的两种方法。 MVVM通过定义视图模型来实现此目的,该视图模型是映射到UI组件的数据结构。UI显示数据,并可能在用户出现时进行更新。 一个反应式框架定义了一个可观察的图形,该图形通知UI某些数据已更改 在主流平台(.net和java中的Rx,react.js)和更多实验性的地方(在Haskell中的FRP)中,反应性框架都在引起人们的关注。 我主要使用带有角度的MVVM,尽管我仅使用它从事小型/中型项目,但我发现表现力比的简单性令人满意。 反应式框架购买了mvvm不买的开发者? 真的有区别吗?例如,knockout.js被宣传为mvvm框架,但在其界面中有一种反应: this.firstName = ko.observable("John"); this.lastName = ko.observable("Smith"); this.fullName = ko.computed(function() { return this.firstName() + " " + this.lastName(); }, this);
11 gui  mvvm  ui  reactive 

2
维持状态而不分配
我正在学习函数式编程,无法理解如何在不使用分配的情况下实现某些特定方案。以下简单的问题几乎使我感到困惑。 编写一个程序,该程序接收有关给定数据结构更改的事件,并在此数据结构达到特定状态时发出事件。 所以我有一个我要维护的数据结构的副本 datastructure_copy::DataStructure 当事件发生变化时,我会触发事件流: datastructure_changes::Stream Change 我有一个将更改应用于数据结构并返回新副本的函数: apply_change::Change -> DataStructure -> DataStructure 而且我有一个谓词,用于检查数据状态是否已达到所需状态。 is_ready::DataStructure ->Boolean 换句话说,我需要在流上工作的“ reduce”之类的东西。 我知道实现此目标的一种方法是在每次更改到达时重新计算状态,但这似乎不切实际。我在State monad玩了一点,但在我看来,这似乎是为了解决另一个问题。 那么还有另一种方法吗? 请注意,我的问题纯粹是概念性的,对Haskell并不很熟悉。

1
“通量”与纯函数式反应式编程之间是什么关系?
据我了解,Flux是一种技术,用于单向处理应用程序的数据流,将状态与程序的其余部分隔离在只读的独立“存储区”中,该存储区可以通过侦听来更改其自身的状态。由视图发出并由调度程序调度的“动作”。或者,简而言之-一种控制状态的方法。 如果是正确的话,它与功能反应式编程有何关系?由于FRP对状态有非常强的控制力,因此我想这是实际上解决相同问题的互斥技术。因此,如果使用FRP库(例如Elm),则Flux几乎没有用。它是否正确?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.