问题标签 [composition]

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.

0 投票
3 回答
1751 浏览

haskell - 过滤器/地图组合问题 Haskell

我在教程中被提出过这个问题,我真的不知道该怎么做。

必须如何根据 p 和 f 定义 g 和 h 以确保
filter p . map f = map g . filter h
始终成立?

任何指向正确方向的指针将不胜感激。

0 投票
5 回答
41683 浏览

c++ - 包含其他对象的类的 C++ 隐式复制构造函数

我知道如果您自己不实现,编译器有时会提供默认的复制构造函数。我对这个构造函数到底做了什么感到困惑。如果我有一个包含其他对象的类,这些对象都没有声明的复制构造函数,那么行为会是什么?例如,像这样的一个类:

现在,如果我这样做:

默认的复制构造函数会做什么?编译器生成的复制构造函数 in 会Foo调用编译器生成的构造函数 inBar进行复制bar,然后将调用编译器生成的复制构造函数 inBaz吗?

0 投票
3 回答
1830 浏览

windows - 启用桌面合成是否需要双缓冲?

启用桌面合成后是否仍需要双缓冲?

在 Microsoft 的应用程序兼容性指南中:

图形设备接口 (GDI)

在 Windows Vista 和 Windows Server 2008 之前,窗口句柄 (HWND) 直接绘制到屏幕上,这有一定的好处,但限制了 Windows 显示和管理顶级窗口的方式。在 Windows Vista 和 Windows Server 2008 中,所有顶级窗口都被渲染为离屏位图(类似于 WS_EX_LAYERED),桌面窗口管理器将图像组合在一起以绘制桌面。

听起来现在所有的渲染都是在离屏位图上完成的:

窗口被渲染为离屏位图

它是否正确?

我问的原因是因为我在标准油漆周期中仍然看到闪烁:

  • WM_ERASEBKGND
  • WM_PAINT

启用桌面合成时:

替代文字

我会假设在调用之间

所有的绘画都会发生在后台缓冲区:

窗口被渲染为离屏位图

同时,前缓冲区将不受影响。

0 投票
7 回答
5473 浏览

oop - 是否使用 has-a(组合)或 is-a(继承)对汽车对象(及其部件,如引擎)进行建模?

我正在开发一个包含对象 Car 的类库。

困境是,汽车本身将是一个具有诸如注册号等字段的类,以及汽车的其他一般信息。

但是汽车有引擎、底盘等。这些对象也需要建模。它们应该是嵌入在 Car 中的类吗?如果不是,嵌入式类的使用场景是什么?

我了解到组合是“一部分”,因此您可以对单独的类进行建模并使用引擎类型,例如,在汽车的字段级别来实现这一点。但是,“聚合”是与在 ctor 中传递的类型“有”的关系,也适用(汽车“有”引擎)。

我该走哪条路?

编辑:我目前正在做作业,因此我没有回复。类库用于基于汽车的 Web 应用程序。我是一名专业开发人员(我以 .NET 为生,但作为一名初级开发人员),所以这不是一个家庭作业问题。

谢谢

0 投票
2 回答
2242 浏览

objective-c - Objective-C 中的类组合问题:是否可以继承类变量?

为了帮助了解 Objective-C,我正在创建一个非常基本的无 Cocoa 连接 4 游戏。

在我的程序中,我有三个模块:

  • “游戏”:包含一个保存棋盘信息的数组。在 main 中创建并负责转弯的对象。Player 和 Computer 对象位于该模块中。
  • “玩家”:拥有一个将玩家的棋子插入首选列的函数(此模块的存在是为了封装,仅此而已)。
  • “计算机”:包含根据当前板设置确定计算机应移动的位置的功能,然后将一块放置在该位置。

理想情况下,我希望 Player 和 Computer 类能够pieceLoc通过某种继承来编辑存在于 Game 中的相同实例,但是我不确定如何执行此操作。

这是我目前正在考虑的一个片段:
// startGame exists within the "Game" module

}

用于玩家和计算机移动的函数是需要以某种方式获得对数组的访问权限的函数pieceLoc(一旦我了解更多关于类与实例方法的信息,它将作为实例变量存在)。pieceLoc当前以 char * 形式存在,以防我必须通过函数参数传递它。

我觉得这是一个关于我如何考虑 OOP 的相当简单的问题,但是尽管我在下午的大部分时间都在寻找我所寻找的东西,但我还是找不到答案。从我收集到的问题中,我的问题与类组成有关,但我找不到关于 Objective-C 的好的资源。

所以,再次:我正在寻找一种方法,将pieceLoc“父类”游戏中的单个实例传递给两个“子类”,无需使用其他参数pieceLoc即可直接对其进行操作。

如果将数组作为参数传递最终确实是更惯用的做法,我能否获得一个示例,说明在 Objective-C 中如何通过引用传递?

谢谢您的帮助!

0 投票
0 回答
5860 浏览

dependencies - 关于聚合、组合和依赖之间差异的基于代码的示例

不同类型的关联(即聚合、组合和依赖)之间有什么区别?借助代码示例(Java、C++ 或伪代码)进行解释。

0 投票
6 回答
1416 浏览

c++ - C++:组合接口

所以我花了一些时间思考这个问题,并且在谷歌上到处寻找“解决方案”(解决方案很可能是一个偏好问题,但我对此不确定)。以下是我遇到的问题,但这个问题可以应用于很多关于构图的情况。

我有一个类,颜色,包含红色、绿色、蓝色和 alpha 的成员。它们中的每一个都有一个 set 和 get 成员函数。很简单。

我将在其他类中使用这个类来指定它们的颜色,例如(为简洁起见,省略构造函数和析构函数):

现在我的问题是:这个 ColourableObject 类如何最好地访问这个 Color 对象?最好检索 Color 对象以直接访问其成员函数,如下所示:

或者,最好给 ColourableObject 类提供自己的集合并获取颜色函数,其中作用于 Color 对象,如下所示:

对我来说,前者是最合乎逻辑的,因为它可以通过简单地直接作用于这个 Color 对象来为每个需要这个 Color 对象的类添加功能,从而省去很多麻烦。

但是,后者不是更容易更改 ColourableObject 类吗?更不用说 colourableObject.getColour().setRed(x) 对我来说似乎不太自然,因为 get 和 set 相互冲突。

我可能完全有错误的方法。我对C++比较陌生,所以我愿意学习!所以问题是,我应该使用前一种方法,后一种方法,还是完全不同的方法?

0 投票
6 回答
861 浏览

function - 在 Haskell 中编写两个引发错误的函数

我遇到的问题是这样的:

以与 mapMaybe 类似的方式,定义函数:composeMaybe :: (a->Maybe b) -> (b -> Maybe c) -> (a-> Maybe c) 组合两个引发错误的函数。

Maybe a 类型和 mapMaybe 函数的编码如下:

我尝试使用这样的组合:

但它不编译。

谁能指出我正确的方向?

0 投票
7 回答
4809 浏览

php - 有没有办法重新分配 $this?

首先,我不想扩展一个类。理想情况下,我想这样做。

我有一个系统,其中变量 $Five 是一个包含其他库的容器类。我可以将它分配给五的局部变量......即

但是,我试图避免这种情况的原因是函数调用会变得有点长。

它有点丑。会更好。

什么是最好的解决方案?

0 投票
7 回答
236 浏览

linux - 关于Linux命令的组成

假设:

  1. 文件 f 的路径是 ~/f
  2. "which f" 显示 "~/f",

然后,

which f | cat显示~/f。所以cat这里适用于 的引用~/f,与 不同cat ~/f

我的问题是:如何使用由which和组成的命令cat来实现cat ~/f? 当我事先不知道结果的时候which f,使用这个组合会很方便。目前,如果我事先不知道结果which f,我必须先调用which f,然后将结果复制粘贴到 feed less

一个相关的问题是:如何将结果分配给which f变量?

非常感谢!