关于我的设置和虚拟机,我遇到了一个小问题.最近我设置了一个VM,这样我就可以每周左右执行一次干净的检查和代码构建.但是,我的文档文件夹位于公司网络上(感谢IT部门!),因此我的设置在我的真实机器和我的虚拟机之间共享.
显然,这会导致永无止境的冲突,并且非常烦人.我觉得应该有一些简单的方法将VM指向一个不同的位置,它可以在内部存储和使用它的设置.有谁知道如何做到这一点?
当谈到F#时,我非常环保,而且我遇到了一个处理递归函数的小问题,我希望能帮助我理解.
我有一个函数应该吐出下一个偶数:
let rec nextEven(x) =
let y = x + 1
if y % 2 = 0 then y
else nextEven y
// This never returns..
nextEven 3;;
Run Code Online (Sandbox Code Playgroud)
我使用'rec'关键字使它会递归,但是当我使用它时,它会因某种原因在无限循环中运行.如果我像这样重写函数:
let nextEven(x) =
let y = x + 1
if y % 2 = 0 then y
else nextEven y
Run Code Online (Sandbox Code Playgroud)
然后一切正常(没有rec关键字).出于某种原因,我虽然我需要'rec',因为函数是递归的(为什么我不这样做?)为什么函数的第一个版本会永远运行?
编辑
原来这是一个总的noob错误.我已经创建了该函数的多个定义,如注释+答案中所述.
是否有任何可以在Windows应用商店应用中使用的等宽字体?我已经阅读了指南,但没有提到任何等宽的东西.Windows 8上是否有一些我可以使用的内置字体?
如果我有以下功能:
let myFunc x y =
if y = 0 then 1
x
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Program.fs(58,17): error FS0001: This expression was expected to have type
unit
but here has type
int
Run Code Online (Sandbox Code Playgroud)
为什么编译器期望'unit'而不是int?
我是Direct3D 11的新手,我在理解如何基于每个对象更新常量(和其他缓冲区)方面遇到了一些麻烦.我在一些简单的代码,我试图让两个四边形绘制到屏幕,但在不同的位置.这是我用来绘制它们的代码.
// ------------------------------------------------------------------------------------------------------------------------------
void QuadShape::UpdateBuffers(ID3D11DeviceContext* pContext)
{
// We need to know about our verts + set the constant buffers...
// NOTE: We only really need to do this when the buffer data actually changes...
XMMATRIX translate = XMMatrixTranspose(XMMatrixTranslation(X, Y, 0));
XMStoreFloat4x4(&ConstData.World, translate);
D3D11_MAPPED_SUBRESOURCE mappedResource;
ZeroMemory(&mappedResource, sizeof(D3D11_MAPPED_SUBRESOURCE));
pContext->Map(ConstBuf, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
memcpy(mappedResource.pData, &ConstData, sizeof(ObjectConstBuffer));
pContext->Unmap(ConstBuf, 0);
}
// ------------------------------------------------------------------------------------------------------------------------------
void QuadShape::Draw(ID3D11DeviceContext* pContext)
{
UpdateBuffers(pContext);
pContext->DrawIndexed(_VertCount, _StartVert, 0);
}
Run Code Online (Sandbox Code Playgroud)
您可以看到我正在根据对象的当前X/Y位置计算转换矩阵,并将其映射到对象的常量缓冲区,表示为"ConstBuf".我遇到的问题来自于这样一个事实:即使我已经验证了为每个四元组计算的矩阵确实不同,并且缓冲区确实是动态的,所有四边形结尾都被绘制在同一位置.
我猜测正在发生的事情是,映射的资源只是被最后一个矩阵所覆盖,但我认为MAP_WRITE_DISCARD应该避免这种情况.我很困惑,我怎样才能为每个对象使用不同的常量缓冲区,让它们显示在不同的位置?
可能的重复:
固定大小的队列,它会在新的队列中自动将旧值出列
是否有一个集合会在添加新项目时自动删除旧项目?假设我有一个限制为十个项目的列表。添加第十一项后,删除第一项,容量仍为十。好像会有这样的东西,但是我找不到。有任何想法吗?
我有一些旧的游戏代码,我正在移植到XNA.我的所有对象都使用x/y(float)和Vector2来描述各种位置等.
除了语法之外,有一个很好的基于性能的原因将我的旧x/y类型单位转换为Vector2,或者我可以只做一个直接端口而不必担心它?
有没有办法让TFS从解决方案资源管理器菜单中执行结账,而不会问我一堆愚蠢的问题?我只想点击'checkout for edit'并让它检查出所有默认设置的文件.相反,我得到一个非常烦人的对话框,其中包含一些我不关心的选项.有任何想法吗?
有没有办法让 powershell 将最后一个命令粘贴到当前的命令行中?
例如,假设我输入:
get-service
Run Code Online (Sandbox Code Playgroud)
并决定我想要更多信息,所以我会输入:
get-help get-service
Run Code Online (Sandbox Code Playgroud)
相反,似乎应该有一条捷径,这样我就可以这样:
get-help %x
Run Code Online (Sandbox Code Playgroud)
并获得相同的结果,因为本示例中的快捷方式%x将替换为之前的命令get-service。甚至可以通过键盘上的按钮来获得相同的结果。当然,这是一个人为的示例,但看起来它在更复杂的场景中确实很有用。有类似的东西吗?
这完全让我疯狂.当我编译我的程序时,我收到以下错误消息:
错误LNK2019:未解析的外部符号_D3D11CreateDeviceAndSwapChain @ 48
我知道我有所有正确的lib /和include目录(x86),我已经跟踪了这个问题,如果我去定义(F12),我得到两个符号,一个用于DirectXSDK安装目录,和一个在"c:\ Program Files(x86)\ Windows Kits\8.0\Include\um".
对于我的生活,我不知道该怎么做.我已经浏览了所有包含/排除目录,我无法解决它,我不知道该怎么做.谁能帮我?
c# ×4
c++ ×2
directx ×2
f# ×2
collections ×1
directx-11 ×1
fonts ×1
performance ×1
powershell ×1
tfs ×1
tfs2010 ×1
unit-type ×1
windows ×1
xaml ×1
xna ×1