我正在使用Real World Haskell的I/O章节.Monads在本书中未讨论另外7章.也就是说,我对I/O的理解充其量是不完整的.
现在我正在尝试理解mapM功能.据我所知,函数"执行"列表中的每个元素必须是"动作"(IO monad).
没有意义的是这个例子.为什么mapM返回的结果与映射相同的参数不同?
Prelude> map (\x -> [x]) [0, 1, 2] [[0],[1],[2]] Prelude> mapM (\x -> [x]) [0, 1, 2] [[0,1,2]]
我正在创建一个绘图应用程序,当它获得WM_SCROLL或WM_MOUSEMOVE时呈现OpenGL.事情是有很多鼠标移动,我只需要它每秒渲染最多60帧.所以我在我的引擎类中创建了一个名为CanRender的bool.所以在我的render()proc我做:if(!CanRender){return; } CanRender = false;
基本上它可以防止它渲染超过60 FPS.
我在WM_CREATE中创建了计时器.
当我得到WM_TIMER时,我将CanRender设置为true.
我发出嘟嘟声,所以我知道计时器正在运行.一旦我开始滚动或移动鼠标,哔哔声停止,我不再看到渲染.为什么要停止我的计时器?此外,当我最小化计时器再次启动然后重新启动时,它再次停止.
谢谢
消息泵:
// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int) msg.wParam;
Run Code Online (Sandbox Code Playgroud)
创建:
case WM_CREATE:
//Set Window Title
SetWindowText(hWnd,engineGL.current.caption.c_str());
SetTimer(hWnd, // handle to main window
120, // timer identifier
17, // 60 fps interval
(TIMERPROC) NULL); // no timer callback
Run Code Online (Sandbox Code Playgroud) 我有兴趣找到表示其正确除数的总和等于数字的属性的数字.第一个例子是6,其中适当的除数是1 + 2 + 3 = 6.
我在R中编写了以下代码,但我觉得它非常低效并且可以显着改进.
propDivisor <- function(
max
)
{
n<-{}
for(j in 2:max){
m<-{}
for(i in 1:(j/2+1)){
if(j%%i==0){m<-c(m,i)}
}
if(sum(m)==j){n<-c(n,j)}
}
return(cat("The proper divisors between 1 and", max, "are", n, ".", sep=" ") )
}
Run Code Online (Sandbox Code Playgroud)
有没有人有任何改进以下代码的建议?我觉得应该在这里使用其中一个apply函数.也许这对未来来说是一个不错的代码高尔夫练习?
而且我知道这在某种程度上经常出现,这不是一个家庭作业问题,只是同事今天早些时候作为一个有趣的编码挑战者提出的问题.
更新:
感谢大家对于寻找更多信息的地方的意见和想法.这是利用sapply的另一个解决方案:
D <- function(n) sum((1:(n-1))[n%%1:(n-1)==0])==n
(2:9000)[sapply(2:9000,D)]
Run Code Online (Sandbox Code Playgroud) 这是我提出的最好的:
public static int GetPageCount( PrintDocument printDocument )
{
printDocument.PrinterSettings.PrintFileName = Path.GetTempFileName();
printDocument.PrinterSettings.PrintToFile = true;
int count = 0;
printDocument.PrintController = new StandardPrintController();
printDocument.PrintPage += (sender, e) => count++;
printDocument.Print();
File.Delete( printDocument.PrinterSettings.PrintFileName );
return count;
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?(这实际上很慢)
我正在寻找一种方法来以编程方式更改组策略设置的值,而无需重新启动计算机或在其上安装任何其他组件
寻找Windows 2003,2008的解决方案,机器是域的一部分
该值位于管理模板\网络\ QoS数据包计划程序,限制未完成的数据包
尝试以下方法:
直接更改注册表 - 这不起作用,因为该值实际存储在registry.pol文件中并从那里传播到注册表
使用的WMI - 表示注册表的WMI对象是只读的,不会修改值
这似乎工作的一个选择是修改下C Registry.pol文件:\ WINDOWS\SYSTEM32\GroupPolicy中\机,不过这似乎有问题,我将不得不手工解析该文件.
如何在活动之间传递socket,inputstream,outputstream对象
我正在设计一个库存系统,它有用户,产品,buy_leads,订单(授权buy_leads),输入和输出.
class Product < ActiveRecord::Base
has_many :buy_leads
end
class BuyLead < ActiveRecord::Base
belongs_to :product
has_one :order
end
class Order < ActiveRecord::Base
belongs_to :buy_lead
belongs_to :user, :foreign_key => :authorized_by
has_many :inputs
end
class Input < ActiveRecord::Base
belongs_to :order
has_many :outputs
end
class Output < ActiveRecord::Base
# Associations
belongs_to :input
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
输入和输出具有数量值.为了获得产品的库存,以及特定产品的库存我在两个原始SQL查询使用UNION,通过使输出量负,然后组,总结他们一起:
class InventoryController < ApplicationController
def index …Run Code Online (Sandbox Code Playgroud) 我想隐藏实现文件中的实现.如果对象不是公共的,我不希望对象的标题在我的类被使用的任何地方泄漏.
假设A.h我的课程有头文件A:
#include "Foo.h"
class A{
private:
Foo foo;
public:
do_stuff();
};
Run Code Online (Sandbox Code Playgroud)
现在无论我在哪里A.h,Foo.h也包括在内.但是我没有在课外的Foo任何地方上课A.我宁愿没有这#include "Foo.h"条线.有没有办法在实现中移动'foo'变量的声明A.cpp?
我怀疑一个可能的解决方案是添加一层抽象类(接口类比).这是最好的解决方案吗?
谢谢.
如果我有以下字符串:
"123; 3344; 4334; 12"
我想在一个通用的这些数字List<int>,我想我不知道这里除了在循环分裂,做一个转换,然后添加到一个很好的方式List<int>,通过每一次迭代.有没有其他方法可以解决这个问题?
更新.这就是我想出来的.我想这样做旧时尚的方式,而不是使用LINQ,因为我试图让只用字符串,数组列表和操纵和一般转换更好.
public List<int> StringToList(string stringToSplit, char splitDelimiter)
{
List<int> list = new List<int>();
if (string.IsNullOrEmpty(stringToSplit))
return list;
string[] values = stringToSplit.Split(splitDelimiter);
if (values.Length <= 1)
return list;
foreach (string s in values)
{
int i;
if (Int32.TryParse(s, out i))
list.Add(i);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
这是我计划在每次需要将分隔的字符串列表转换为List时使用的新字符串实用程序方法
如果出现问题,我会将一个空列表返回给调用者.好坏?这样做很常见吗?
是的,有更多的"优雅"的方式与LINQ这样做,但我想这样做manually..the老办法,现在只是我自己的理解.
另外,困扰我的是:
list.AddRange(str.Split(';').Select(Int32.Parse));
Run Code Online (Sandbox Code Playgroud)
是我不知道的:
str.Split(';').Select(Int32.Parse)因为某种原因失败了怎么办......那么这个AddRange所处的方法会爆炸,除非我在整个事情中添加一个try/catch,如果我没有正确处理它,我就搞砸了.从32位int解交织比特的最有效方法是什么?对于这种特殊情况,我只关注奇数位,尽管我确信将两个集合的任何解决方案概括为简单.
例如,我想转换0b01000101成0b1011.什么是最快的方式?
编辑:
在这个应用程序中,我可以保证偶数位都是零.我可以利用这个事实来提高速度或减少空间吗?