我理解mixin看起来像继承,但更像是组合.
(编辑:我倾向于giving additional functionality/attributes通过mixin 思考而不是giving another is-a relationship.)在
心理上,当我使用mixin时,我说的是这样的东西:我给你这个你缺少的mixin,而不是你实际上也是这个mixin-type. (IS-A)
我读了几遍,你应该更喜欢作文而不是继承.
我们可以使用直接的成分而不是mixins,什么是mixin?
如果我不得不猜测,那是因为my_instance.foo()比my_instance.another_instance.foo()更容易吗?
(如果mixin有foo(),你可以使用my_instance.foo(),当你将another_instance复合为my_instance的属性时,你需要my_instance.another_instance.foo()
还有其他原因吗?
编辑:
所以即使我觉得它有一个-a,但mixin仍然是一种关系.当你使用is-a时,你得到的好处是更清洁的界面.那就是我如何理解德尔南的答案.
我正在尝试重新创建一个过程,以创建一个对象列表,该对象列表是使用Java 8 Streams的另一个对象列表的集合。
例如,我有一个如下所述的类,它是通过数据库调用或类似方法提供的
public class Order {
private String orderNumber;
private String customerNumber;
private String customerGroup;
private Date deliveryDate;
private double orderValue;
private double orderQty;
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序的其他地方,我有一个OrderTotal类,该类代表和汇总按客户编号和组分组的Order分组,并汇总orderValue和orderQty的总数。(在customerGroup和customerNumber上使用等于和哈希码)
public class OrderTotal {
private String customerGroup;
private String customerNumber;
private double totalValue;
private double totalQty;
}
Run Code Online (Sandbox Code Playgroud)
我们在Java 8之前实现这一目标的“长手”方法如下
public Collection<OrderTotal> getTotals(List<Order> orders) {
///map created for quick access to the order total for each order
Map<OrderTotal, OrderTotal> map = new HashMap<>();
///loop through all orders adding to the relevaent order total …Run Code Online (Sandbox Code Playgroud) 在每次年轻的GC活动结束后,请让我知道确定促进老一代年轻一代记忆构成的最佳方法是什么?
理想情况下,我想知道负责的班级名称,每个"年轻一代 - >老一代"推广块的80%的堆;
例如:我有600M年轻人,每个任期晋升6M; 我想知道哪个对象构成了这个6M.
谢谢.
我的应用程序中有一些(相当多余的)查询,如下所示:
var last30Days = DateTime.Today.AddDays(-30);
from b in Building
let issueSeverity = (from u in Users
where u.Building == b
from i in u.Issues
where i.Date > last30Days
select i.Severity).Max()
select new
{
Building = b,
IssueSeverity = issueSeverity
}
Run Code Online (Sandbox Code Playgroud)
和:
var last30Days = DateTime.Today.AddDays(-30);
from c in Countries
let issueSeverity = (from u in Users
where u.Building.Country == c
from i in u.Issues
where i.Date > last30Days
select i.Severity).Max()
select new
{
Country = c,
IssueSeverity = issueSeverity
} …Run Code Online (Sandbox Code Playgroud) 该(.)运营商有签名:
(.) :: (b -> c) -> (a -> b) -> a -> c
(.) f g x = f $ g x
Run Code Online (Sandbox Code Playgroud)
这看起来有点类似于带有一个g的原始递归函数中的组合函数.
我对扩展g -functions 的数量感兴趣,但是(多个)函数将(.)函数应用于g具有多个操作数的函数.换句话说,像:
(..) :: (c -> d) -> (a -> b -> c) -> a -> b -> d
(..) f g x y = f $ g x y
Run Code Online (Sandbox Code Playgroud)
在Hoogle上搜索不会产生任何功能.是否有一个包可以处理任意数量的操作数?
这个问题似乎是重复的,但事实并非如此.我用Google搜索,总线无法获得概念清晰度.有很多动物,汽车的例子.但是,我想了解基本逻辑.一般来说,赞成组合而不是继承,因为它提供了许多优点.在这种情况下,为什么继承被提供为OOP的主要概念之一.我的问题是何时支持继承优于作曲?
我在Visual Basic 2010中编写的这个工具应该为图像添加作者文本.用户可以设置字体不透明度和位置.为了方便起见,我想要一些位置预设,如右下角所示.我正在使用的计算是(在这种情况下右下角:
Dim textSize As Size = TextRenderer.MeasureText(tagString + curText, curFont)
tmpPos = New Point(srcImg.Width - textSize.Width - 10, srcImg.Height - textSize.Height - 10)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这适用于此示例图片.一些文本只是剪辑出来的地方.

第一个:1024x768 | 检测到的字体大小:680x72
第二名:1688x1125 | 检测到的字体大小:680x72
我怀疑这与图像的宽高比有关,但我不知道如何修复它.
文字是这样绘制的:
brush = New SolidBrush(color.FromArgb(alpha, color))
gr = Graphics.FromImage(editImg)
gr.DrawString(tagString + text, font, brush, pos)
HauptBild.Image = editImg
Run Code Online (Sandbox Code Playgroud)
我找到了这个http://www.codeproject.com/Articles/20923/Mouse-Position-over-Image-in-a-PictureBox,它回答了我的问题.
我对命令式编程有很好的把握,但现在我自学了一个Haskell非常好.
我想,我对Monads,Functors和Applicatives有很好的理论认识,但我需要一些练习.而对于练习,我有时会从当前的工作任务中带来一些东西.
而且我在应用方式上结合了一些东西
我有两个验证功能:
import Prelude hiding (even)
even :: Integer -> Maybe Integer
even x = if rem x 2 == 0 then Just x else Nothing
isSmall :: Integer -> Maybe Integer
isSmall x = if x < 10 then Just x else Nothing
Run Code Online (Sandbox Code Playgroud)
现在我想validate :: Integer -> Maybe Integer从even和建造isSmall
我最好的解决方案是
validate a = isSmall a *> even a *> Just a
Run Code Online (Sandbox Code Playgroud)
这不是免费的
我可以使用monad
validate x = do
even x
isSmall x …Run Code Online (Sandbox Code Playgroud) 我在使用 RobotControl 类成员时遇到问题。UML 将 RobotControl\xe2\x80\x99s 位置和 RangeSensor 之间的关系指定为组合。不为它们使用指针,使它们聚合吗?我应该如何声明 - 根据 UML 创建这些成员,或者 UML 是否错误?
\n//fleet.h
#include "ship.h"
#include <vector>
#include <iostream>
#ifndef fleet_h
#define fleet_h
using namespace std;
class fleet
{
public:
//Add_ship and remove_ship method
bool add_ship(ship const &s);
private:
vector<ship*> ships;
};
//Add_ship method
bool fleet::add_ship(ship const & s){
ships.push_back(&s);
return true;
}
#endif /* fleet_h */
Run Code Online (Sandbox Code Playgroud)
该程序给了我这个错误,我不确定我做错了什么。船舶对象通过名为 add_ship 的方法添加到舰队中,该方法需要一个指向船舶的指针。
No matching member function for call 'push_back'
Run Code Online (Sandbox Code Playgroud) composition ×10
c++ ×2
haskell ×2
inheritance ×2
java ×2
oop ×2
.net ×1
aggregation ×1
applicative ×1
aspect-ratio ×1
c# ×1
image ×1
java-8 ×1
java-stream ×1
mixins ×1
pointers ×1
promotions ×1
python ×1
vb.net ×1
vector ×1