问题标签 [cake-pattern]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - ClassTag 和 path-dependent types in a cake-pattern-like flavor
我正在做一个漂亮的项目,我试图让我的数据库层可以在不同的配置文件之间轻松交换,以便在内存数据库上编写测试。这个问题的灵感来自这个问题,但它与 slick 本身没有任何关系。
我对依赖类型没有丰富的经验,在我的例子中,我有以下特征,我用它来从数据库中抽象出一些类型:
然后我有另一个特征,基本上是我的(人造)蛋糕图案的一部分:
然后我有一个组件的实际实现,如下所示:
我需要该标签,因为稍后服务将需要它(在我的实际实现中,我使用这种类型来抽象不同数据库库抛出的不同类型的异常);我很确定有更好的方法来做我想做的事情。
如果我没有实例化ComponentTypes
特征以获取标记,并且我在 DefaultBaseComponent 中移动隐式召唤代码,它将召唤 anull
代替ClassTag
. 我需要有一种方法来引用我正在使用的实际类型(不同的A
以及B
我在不同环境中拥有的类型),并且我需要在其他组件中执行它而不知道它们是哪些实际类型。
我的解决方案有效,编译并通过了我为它编写的所有测试,谁能帮助我让它变得更好?
谢谢!
scala - 在什么情况下,自类型注释提供了扩展无法实现的行为
我试图提出一个组合场景,其中 self-type 和 extends 行为不同,到目前为止还没有找到。基本示例总是谈论不需要类/特征不必是依赖类型的子类型的自我类型,但即使在这种情况下,自我类型和扩展之间的行为似乎是相同的。
当使用一个与另一个时,是否存在组合对象的某种形式的组合或功能不同的情况?
更新 1:感谢那些没有自我输入就不可能的事情的例子,我很欣赏这些信息,但我真的在寻找 self 和 extends 是可能的组合,但不能互换。
更新 2:我想我的特定问题是为什么各种蛋糕模式示例通常都在谈论必须使用自我类型而不是扩展。我还没有找到一个蛋糕模式场景不能和扩展一样好用
scala - 在没有附加特征的蛋糕模式中使用交叉依赖特征时如何避免惰性 val
假设我们有
然后两者都 y2
应该x2
以 2 in 的值结束C
。现在,如果我们混入A
thenB
则y2
值为 1,因为 的值为y
默认值 0。同样,如果我们混入then 则x2
值为 1 。此外,如果这些东西是 Objects 而不是 Ints,那么我们最终可能会得到一个.B
A
NullPointerException
在理想的世界中,我想要的是初始化不是懒惰的,而是初始化的顺序由值的依赖图自动暗示。即一种告诉编译器重新调整初始化顺序而不是使用默认值的方法。此外,我不想将特征重构为更小的特征,然后自己制定正确的混合顺序(在一个巨大的项目中,有时我必须混合 5 个特征,这很难解决)。
更新:换句话说……当我们混合特征时,我们想象将特征叠加在彼此之上,但是当涉及到 vals 时,它并没有真正像这样工作……如何让它像这样工作
更新:如果真的不可能,我会很高兴有人可以共享一个链接,指向任何已经存在的类型安全功能请求票,方法是向 scala 添加一个名为“overlay”的关键字,该关键字可以沿线使用的:
scala - Scala 通用子类型和蛋糕模式
我有以下类层次结构:
现在我有以下特点:
现在我想为学生和老师扩展这个特性:
现在我想创建 Handler 类,它为所有类型的事件提供汽车:
现在,当我尝试为某种类型的事件创建处理程序时,出现编译错误:
我错过了什么?
scala - 显示重蛋糕模式 scala 和 sbt 程序的特征依赖关系图
在我尝试制作一个手动依赖图(使用inkscape)以恢复我使用大量蛋糕模式的scala程序的所有可能性之前,我在这里提出问题。
在使用 Cake Pattern(或依赖注入)的 scala 程序中,是否有一种最好和简单的方法来自动绘制复杂的特征依赖层次结构?
任何 SBT、scala 或其他现有库?
scala - Scaladoc 无法为方法和类签名中的内部类生成链接
我有一个顶级特征,其中包含许多类和特征,例如:
当我为它生成文档时,使用 scaladoc 我可以使用 [[CLASS_NAME]] 链接到内部类,但是 scaladoc 无法在签名和扩展中为树创建链接。
我使用 sbt 生成 scaladoc,并使用以下标志:
为了让您更好地了解,上述定义的api如下(请注意缺少的链接):
你能告诉我我做错了什么吗?
scala - scala中蛋糕图案的重要性
我已经开始学习 scala 一段时间了,现在正在研究蛋糕图案。我从这里得到了例子
对我来说,将 JPA 存储库注入服务似乎有太多样板代码。
然而,这段代码可以用更少的行数做同样的事情
实例化这两种情况。
第二种情况使用更少的代码,并使用 DI。你能帮我了解蛋糕图案带来的额外优势吗?
scala - 老式特征扩展下的蛋糕方法有什么好处?
我试图找出通过蛋糕模式混合特征和通过老式扩展混合它们之间的区别。这是我的两个例子:
通过扩展
通过蛋糕
蛋糕方法有什么好处?它们对我来说都是一样的。也许我错了,但我看不出有任何显着差异。
scala - 用于多个 TableQuery 实例的 Scala Slick 单个过滤器
我正在使用 Scala Slick-3.1.0 lib。
如何制作一个通用的 Slick 过滤器函数,它将 TableQuery 实例作为输入并对其进行相同的 slick 过滤器?
我有几个案例类(例如两个)代表存储在数据库中的数据。有些字段是相同的,因此类可能会扩展共同的祖先:
它们中的每一个在 DB 中都有自己的 SQL 表,并由单独的 SlickTable
类表示。他们也有相同的主键:
最后TableQuery
的类是:
如何制作一个通用的 Slick 过滤器查询函数,该函数将 firstDataTableQuery
orsecondDataTableQuery
作为参数并在输入上进行相同的 slick 查询。仅过滤它们的公共字段或以另一种方式对它们的 SQL 表表示公共列进行过滤。例如像这样:
我查看了这个主题,但仍然无法提出解决方案:
scala - 在使用蛋糕模式时初始化特征属性
是否可以在蛋糕图案的封闭特征中初始化属性?类似于早期初始化程序的东西。例如: