情况就是这样:我主要编写C#并编写了类型,我不想丢失.同时我想学习函数式编程.显而易见的答案当然是F#.
但对于除C#以外的所有内容,我使用emacs作为编辑器,我也非常想学习Lisp.(了解你所知道的编辑器/ IDE的语言,这就是为什么我知道用VB编写我的VS-macro的原因)而且它不仅仅是emacs,Lisp是我真正想要学习的东西.
至于F#,我可以将它与C#混合而没有任何互操作问题,有一个很棒的GUI(WPF)和许多其他.NET好东西.但它当然不像Lisp那样成熟.
如果我是现实的,我知道如果我想将功能性语言走私到我的职业生涯中,它必须是F#.由于学习两种语言似乎有点多,我希望Lisp是学习函数式编程的好方法,如果我以后开始使用F#,那将非常容易....
这是真的?或者这两种语言完全没有可比性?
我有一大块文本(字符串中有200多个字符),需要在30个字符后的下一个空格处插入新行,以保留单词.这是我现在拥有的(不工作):
String rawInfo = front.getItemInfo(name);
String info = "";
int begin = 0;
for(int l=30;(l+30)<rawInfo.length();l+=30) {
while(rawInfo.charAt(l)!=' ')
l++;
info += rawInfo.substring(begin, l) + "\n";
begin = l+1;
if((l+30)>=(rawInfo.length()))
info += rawInfo.substring(begin, rawInfo.length());
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助
Web服务和Windows服务之间有什么区别?
我的经验主要是Windows服务,我从未创建过Web服务.
Web服务的行为与Windows服务类似吗?
他们可以安排,在某些时间运行等吗?
当您使用Web服务代替Windows服务时,反之亦然?
我一直在刷我的C++,我有一个关于删除新内存的快速问题.正如您在下面看到的,我有一个包含FileData*列表的简单类.我创建了一个数组来保存要推送到列表中的FileData对象.当ReportData被破坏时,我遍历列表并删除每个元素.我的问题是,当我使用reportData时,如何删除数组,以便我没有任何内存泄漏?
class REPORTAPI ReportData {
public:
ReportData()
{
}
virtual ~ReportData()
{
printf("Starting ReportData Delete\n");
for (list<FileData*>::iterator i = ReportFileData.begin(), e = ReportFileData.end(); i != e; )
{
list<FileData*>::iterator tmp(i++);
delete *tmp;
ReportFileData.erase(tmp);
}
for (list<SupressionData*>::iterator i = ReportSupressionData.begin(), e = ReportSupressionData.end(); i != e; )
{
list<SupressionData*>::iterator tmp(i++);
delete *tmp;
ReportSupressionData.erase(tmp);
}
ReportFileData.clear();
ReportSupressionData.clear();
printf("Finished ReportData Delete\n");
}
list<FileData *> ReportFileData;
list<SupressionData *> ReportSupressionData;
}
extern "C" __declspec(dllexport) FileData* __stdcall createFileData(string fileName, long recordCount, long addPageCount)
{
return …Run Code Online (Sandbox Code Playgroud) 有一个":a"命令,但那是多行的,argdo会再次要求你为每个文件提供文本.
文档提到全局命令(g/pat/command),它将使用替换版本的":a",它由换行符而不是"."终止.在一行(您可以通过"\"转义它们来包含换行符).但我无法让它发挥作用.
我看到的唯一方法是首先将要添加的文本添加到命名寄存器中,然后使用:
:argdo put x " where x is the register
Run Code Online (Sandbox Code Playgroud)
我希望有类似的东西
:argdo append myTextHere
Run Code Online (Sandbox Code Playgroud) 在SQL Reporting Services 2008中,您是否可以有条件地格式化字段?在Crystal Reports中,它是可行的.我有一个字段,如果另一个字段是Y,我想要加粗,如果它的值是N,则显示为unbold.
我正在产生外部控制台应用程序并使用异步输出重定向.
如此SO帖子所示
我的问题是,在得到OutputDataReceived事件通知之前,生成的进程似乎需要产生一定量的输出.
我想尽快收到OutputDataReceived事件.
我有一个简单的重定向应用程序,这里有一些观察:
1.当我调用一个简单的'while(true)print("X");' 控制台应用程序(C#)我立即收到输出事件.2.当我调用3d派对应用程序时,我试图从命令行换行,我看到逐行输出.
3.当我从裸骨包装器中调用该3d派对应用程序时(参见1) - 输出以块(约一页大小)的形式出现.
该应用内部会发生什么?
仅供参考:有问题的应用程序是"USBee DX数据Exctarctor(异步总线)v1.0".
我正在编写一个非常基本的解析器(主要是为了更好地理解它们是如何工作的),它使用户输入选择的几个单词,检测句子结构是否正常,并输出结果.语法是:
句子:Noun Verb
文章句子
句子连词句
连词:"和""或""但是"
名词:"鸟""鱼""C++"
动词:"规则""飞""游泳"
文章:"该"
写语法很简单.它正在实现给我带来麻烦的代码.我的伪代码是:
main()
get user input (string words;)
while loop (cin >> words)
call sentence()
end main()
sentence()
call noun()
if noun() call verb() (if verb is true return "OK" ???)(else "not ok"???)
else if not noun() call article()
if article() call sentence() (if sentence is true "OK"???)(else "not"?)
else if not noun() call conjunction()
if sentence() conjunction() sentence() - no idea how to implement
return "OK"
else "not ok"
Run Code Online (Sandbox Code Playgroud)
所以有我非常邋ps的伪代码.我有一些关于实施它的问题.
对于单词函数(名词,动词等),我该如何检查它们是否属实?(如检查用户的输入是否有鸟类,鱼类,苍蝇,游泳等) …
是否可以使用NIO处理进程中的stdout?我有它使用java.io,但这是一个练习,以了解更多关于NIO和探索性能改进的可能性.
基本上我想尽可能快地将大量文本从stdout流式传输到缓冲区而不会阻塞,然后再处理该缓冲区的内容.麻烦的是,我似乎无法弄清楚正确的伏都教使其与NIO合作.这就是我现在所处的位置:
ProcessBuilder pb = new ProcessBuilder( ... );
Process p = pb.start();
stdout = new StreamConsumer(p.getInputStream());
new Thread(stdout).start();
// other stuff omitted for brevity
Run Code Online (Sandbox Code Playgroud)
StreamConsumer类看起来像这样:
class StreamConsumer implements Runnable
{
private InputStream is;
public StreamConsumer(InputStream is)
{
this.is = is;
}
public void run()
{
try
{
ReadableByteChannel source = Channels.newChannel(is);
// Is it possible get a channel to a ByteBuffer
// or MappedByteBuffer here?
WritableByteChannel destination = ??;
ByteBuffer buffer = ByteBuffer.allocateDirect(128 * 1024);
while (source.read(buffer) != -1) …Run Code Online (Sandbox Code Playgroud) 我一直试图理解ActionScript的事件实现方式,但我被困住了.
我知道AS是单线程的,这意味着一次只执行一个事件处理程序,这也意味着处理程序将以确定的顺序执行*.
例如,请考虑以下代码:
1: var x = {executed: false};
2: foo.addEventListener("execute", function(){ x.executed = true; });
3: foo.dispatchEvent(new Event("execute"));
4: assert(x.executed);
Run Code Online (Sandbox Code Playgroud)
如果ActionScript是多线程的,那么第4行的断言有时可能会失败并成功.
但由于AS是不是多线程的,它按理说,断言要么总是 fail²或总是 succeed³.或者,换句话说,事件将以确定的方式处理.
那么,这个假设(确定性地处理事件)是否正确?Adobe是否就此事提供了任何明确的文件?
注意:我只关注发送的事件dispatchEvent- 我意识到"外部调度"事件(网络流量,用户输入,定时器滴答等)表现不同.
*:当然,例外情况是由用户输入或网络流量等非确定性事件触发的事件.
²:例如,如果事件处理算法是:"将新事件推送到堆栈,然后不断地从堆栈中弹出顶级事件,执行它直到它终止,然后继续下一个事件",它总是会失败.
³:如果发送的事件在发送后dispatchEvent立即处理,它总是会成功.
c++ ×2
java ×2
actionscript ×1
apache-flex ×1
append ×1
bytebuffer ×1
c# ×1
console ×1
events ×1
f# ×1
flex3 ×1
inputstream ×1
insert ×1
lisp ×1
memory ×1
newline ×1
nio ×1
nlp ×1
parsing ×1
ssrs-2008 ×1
string ×1
vi ×1
vim ×1
web-services ×1