我有这个代码,它不会编译,突出显示Point3的x和y右边并写:"x的多个声明"和"y的多个声明".怎么了?Point2和Point3不能拥有相同的成员名称吗?
data Point2 = Point2 {x :: Float, y :: Float}
data Point3 = Point3 {x :: Float, y :: Float, z :: Float}
Run Code Online (Sandbox Code Playgroud) 假设我有一个超类“Animal”和子类“Cat”、Dog、Bird“。有没有办法拥有子类类型数组而不是类实例,我可以用它来实例化每个可能的子类的实例?
为了简单起见,我想要这个:
Pseudo code: For each possible subclass of "Animal": create an instance of that class.
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
编辑:我不需要这些子类的实例数组,我想要一个对象类型的数组。
在Haskell中,当性能很重要并且使用美元或点都是有效选项时,哪一个比另一个好?一个人会比另一个人获得性能提升吗?
例如,给定(foo . bar. baz) value和foo $ bar $ baz value,是一个比另一个快?
我的程序是如何开始的:
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nShowCmd)
{
MapEditor mapEditor;
mapEditor.Run();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并且有MapEditor():
MapEditor::MapEditor()
{
/* Creates the window */
WNDCLASSEX wClass;
ZeroMemory(&wClass,sizeof(WNDCLASSEX));
wClass.cbSize=sizeof(WNDCLASSEX);
wClass.style=CS_HREDRAW|CS_VREDRAW;
wClass.lpfnWndProc=WinProc;
wClass.cbClsExtra=NULL;
wClass.cbWndExtra=NULL;
wClass.hInstance=GetModuleHandle(0);
wClass.hIcon=NULL;
wClass.hCursor=LoadCursor(NULL,IDC_ARROW);
wClass.hbrBackground=(HBRUSH)COLOR_WINDOW;
wClass.lpszMenuName=NULL;
wClass.lpszClassName="Map Editor";
wClass.hIconSm=NULL;
if(!RegisterClassEx(&wClass))
{
int nResult=GetLastError();
MessageBox(NULL,"Failed to register window class","Window Class Failed",MB_ICONERROR);
}
ME_HWnd=CreateWindowEx(NULL,
"Map Editor",
"Map Editor",
WS_OVERLAPPEDWINDOW | WS_MAXIMIZE | WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
GetModuleHandle(0),
this);
if(!ME_HWnd)
{
int nResult=GetLastError();
MessageBox(NULL,"Window class creation failed","Window …Run Code Online (Sandbox Code Playgroud) 当我按下回车键时,它会重新定位大括号.我怎么能阻止它?我希望VS在键入开口支撑后自动添加一个右大括号,但我不希望它在输入时移动大括号.我怎样才能做到这一点?
以下工作如下:
enum TileBmp {Mask, Grass, Sand, Snow, Swamp, Paved, Rock, Savannah, Lava}
ID2D1Bitmap* pBmpTile[TileBmp];
Run Code Online (Sandbox Code Playgroud)
这会创建一个大小为9的数组,其中可以使用其编号或名称访问任何元素吗?例如,pBmpTile [3]和pBmpTile [Snow]是否都指向相同的ID2D1Bitmap*?
我现在不能尝试,直到有时才会有能力.否则我会自己尝试一下.
如果这不起作用,两者都有更清洁的替代品
ID2D1Bitmap* pBmpTile[9]
和
ID2D1Bitmap* pBmpMask, pBmpGrass, pBmpSand, pBmpSnow, pBmpSwamp, pBmpPaved, pBmpRock, pBmpSavannah, pBmpLava;
Run Code Online (Sandbox Code Playgroud)
?
我有一个正在增长的功能,它正在获得如下所示的模式.什么是这些的适当替代品,其中f = fooed e等于裸露e等于bazed d ...?
myFunc:: String -> Options -> String
myFunc someString opts = topStr ++ editedMidStr ++ botStr
where editedMidStr = foo f
f = bar e
e = baz d
d = qux c
... = ...
Run Code Online (Sandbox Code Playgroud) 为什么Haskell允许在第一个例子中做一个Shape列表,但不像第二个例子那样?据我所知,两个列表都有元素
{ name :: String, position :: Vector3D, radius :: Double }
Run Code Online (Sandbox Code Playgroud)
要么
{ name :: String, position :: Vector3D, dimensions :: Vector3D }.
前1:
data Shape
= Sphere { name :: String, position :: Vector3D, radius :: Double }
| Prism { name :: String, position :: Vector3D, dimensions :: Vector3D }
Run Code Online (Sandbox Code Playgroud)
前2:
data Sphere = Sphere { name :: String, position :: Vector3D, radius :: Double }
data Prism = Prism { name :: String, position :: …Run Code Online (Sandbox Code Playgroud) 我做了这个功能:
-- Generates multiple random values
randoms :: (Random a) => StdGen -> Int -> a -> a -> ([a], StdGen)
randoms rndGen nbrsCount min max = randomNbrs' nbrsCount min max ([], rndGen) where
randomNbrs' rndGen 0 min max cumul = cumul
randomNbrs' rndGen count min max cumul = randomNbrs' rndGen (count-1) min max (values, snd rndGen') where
rndGen' = randomR (min, max) rndGen
values = fst rndGen' : values
Run Code Online (Sandbox Code Playgroud)
而且难以阅读.因为我是Haskell的新手,所以我无法找到如何提高其可读性.如何使这更容易阅读和更简洁?
我每小时多次随机获取此错误(D2DERR_RECREATE_TARGET),在阅读该错误后,我似乎无法避免它.我使用的是SharpDX,它是"一个在.Net平台下提供完整DirectX API的开源项目".
根据microsoft的文档:"Direct2D通过从EndDraw方法返回错误代码D2DERR_RECREATE_TARGET来指示丢失的设备.如果收到此错误代码,则必须重新创建渲染目标和所有依赖于设备的资源."
这是否真的意味着我需要跟踪渲染目标创建的每个依赖于设备的资源(有很多!)并停止使用或者我错了吗?或者也许这里有人知道解决这个错误的方法?
haskell ×5
c++ ×3
oop ×3
arrays ×2
c# ×2
.net ×1
declaration ×1
direct2d ×1
directx ×1
enums ×1
function ×1
inheritance ×1
java ×1
list ×1
performance ×1
polymorphism ×1
readability ×1
sharpdx ×1
subclass ×1
superclass ×1
where ×1
winapi ×1
wndproc ×1