我正在努力深入了解Haskell中的懒惰.
我今天想象的是以下片段:
data Image = Image { name :: String, pixels :: String }
image :: String -> IO Image
image path = Image path <$> readFile path
Run Code Online (Sandbox Code Playgroud)
这里的吸引力是我可以简单地创建一个Image实例并传递它; 如果我需要图像数据,它将被懒惰地读取 - 如果不是,将避免读取文件的时间和内存成本:
main = do
image <- image "file"
putStrLn $ length $ pixels image
Run Code Online (Sandbox Code Playgroud)
但它是如何实际工作的?懒惰如何与IO兼容?readFile是否会被调用,无论我是否访问,pixels image或者如果我从未引用它,运行时是否会将该thunk评估为未评估?
如果确实懒惰地读取了图像,那么I/O操作是否可能无序发生?例如,如果在调用后立即image删除文件怎么办?现在,putStrLn调用在尝试读取时将找不到任何内容.
我是C预处理器的新手.是否有可能改变提供给函数的参数的大小写#define?例如,我想写test(size),然后在结果替换中涉及"大小".
我正在ARM Linux上编写一个JIT,它执行一个包含自修改代码的指令集.指令集没有任何缓存刷新指令(在这方面类似于x86).
如果我向页面写出一些代码,然后mprotect在该页面上调用,那是否足以使指令缓存无效?或者我还需要cacheflush在这些页面上使用系统调用吗?
我有这个Windows窗体应用程序,它位于通知区域.单击图标将其显示在前面,再次单击它(或单击应用程序X图标)将其发回.这是通过单击图标显示窗口始终位于顶部的应用程序类型(虽然它是可选的).
右键单击该图标将显示一个上下文菜单,您可以选择是否启用"始终在线"选项.当应用程序首次启动时,应用程序设置将从XML文件中读取,并且我99%认为这是正常工作,TopMost属性正确读取(和写入).
经过一段时间(几分钟,几小时,几天,无论如何;我通常休眠,很少关机)TopMost 停止工作.我没有更改选项,我不认为有什么改变选项值,但我点击通知区域图标和应用程序没有提前.它显示但它在背景上(它显示在Alt + Tab上),它不应该"始终在顶部".我打开上下文菜单,禁用该选项(使其启用)并启用它,然后它开始工作.该应用程序现在"始终在顶部".但是,它可能会在一段时间后的任何时候失去这种能力.
我不明白为什么会发生这种情况以及如何发生这种情况 有谁知道为什么?如果没有,任何想法我怎么能尝试调试这样的行为?
编辑:
我添加了一段代码来显示一个MessageBox,当TopMost属性被更改,看看我是否能注意到任何奇怪的行为,但它并不好.它没有帮助,因为表格是有的,TopMost = true但它仍然在后台......
我注意到rpmbuild(-bb和--buildroot选项)根据你使用的操作系统在不同的位置创建.rpm:
那么如何手动设置所有操作系统的目标文件夹?
我有一个direct3d项目,它使用D3DXCreateTextureFromFile()来加载一些图像.此函数采用LPCWSTR作为文件路径.我想加载一系列连续编号的纹理(即MyImage0001.jpg,MyImage0002.jpg等)但是c ++的疯狂字符串让我很困惑.
我如何能:
for(int i=0; i < 3;i++)
{
//How do I convert i into a string path i can use with D3DXCreateTextureFromFile?
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我应该提到我正在使用Visual Studio 2008的编译器
注意:以下是我的作业/作业,如果你愿意,请随时不回答.
我想删除/删除一个元素从String数组(Set)基本,我不允许使用Collections..etc.
现在我有这个:
void remove(String newValue) {
for ( int i = 0; i < setElements.length; i++) {
if ( setElements[i] == newValue ) {
setElements[i] = "";
}
}
}
Run Code Online (Sandbox Code Playgroud)
我做了我想要的,因为它从数组中删除元素但它没有缩短长度.以下是输出,基本上它删除了索引#1的元素.
D:\javaprojects>java SetsDemo
Enter string element to be added
A
You entered A
Set size is: 5
Member elements on index: 0 A
Member elements on index: 1 b
Member elements on index: 2 hello
Member elements on index: 3 world
Member elements on index: 4 six
Set size …Run Code Online (Sandbox Code Playgroud) 作为MFC的相对新手,我看到了很多设备上下文(DC).我隐约明白它与绘图有关,但具体内容在我能找到的任何地方都没有得到很好的解释.创建"兼容的设备上下文"是什么意思,为什么它很重要?SelectObject做了什么,我该如何首先兼容DC?
我需要从数据库中读取数据,然后将其保存在文本文件中.
我怎么能在Ruby中做到这一点?Ruby中有文件管理系统吗?