我正在尝试为下面的命令定义语法.
object ParserWorkshop {
def main(args: Array[String]) = {
ChoiceParser("todo link todo to database")
ChoiceParser("todo link todo to database deadline: next tuesday context: app.model")
}
}
Run Code Online (Sandbox Code Playgroud)
第二个命令应该标记为:
action = todo
message = link todo to database
properties = [deadline: next tuesday, context: app.model]
Run Code Online (Sandbox Code Playgroud)
当我在下面定义的语法上运行此输入时,我收到以下错误消息:
[1.27] parsed: Command(todo,link todo to database,List())
[1.36] failure: string matching regex `\z' expected but `:' found
todo link todo to database deadline: next tuesday context: app.model
^
Run Code Online (Sandbox Code Playgroud)
据我所知,它失败了,因为匹配消息的单词的模式几乎与属性键的键的模式相同:值对,因此解析器无法分辨消息的结束位置和属性的开始.我可以通过坚持为每个属性使用开始令牌来解决这个问题,如下所示:
todo link todo to database :deadline: next tuesday …Run Code Online (Sandbox Code Playgroud) 当我跑:
svn commit -m "some message" myFile.txt
Run Code Online (Sandbox Code Playgroud)
在DOS shell中,它给我一个空行作为结果.没有错误消息等.并且文件未提交.
可能是什么导致了这个?
问候,我在使用Linq to Entities获得的IQueryable对象的Where子句扩展方法中使用bool操作时遇到了一些问题.第一个例子显示了使用Bool1作为我需要移动到where子句扩展方法的操作.第二个例子是改变后不起作用的.Bool1完全被忽略,不会影响结果.
例1:
var results =
from a in context.aTable1
where a.Bool1 == false && a.Bool2 == false
select new
{
Column1 = a.Column1
Bool1 = a.Bool1
Bool2 = a.Bool2
};
results.Where(l => l. Column1.Contains(fooString));
Run Code Online (Sandbox Code Playgroud)
例2:
var results =
from a in context.aTable1
where a.Bool2 == false
select new
{
Column1 = a.Column1
Bool1 = a.Bool1
Bool2 = a.Bool2
};
results.Where(l => l.Bool1 == false);
results.Where(l => l. Column1.Contains(fooString));
Run Code Online (Sandbox Code Playgroud)
这些都是简化的例子,但我希望它们能说明我想要做的事情.where扩展方法在不同的方法中,并且是我在创建原始查询时无法完成的原因.
我尝试了以下其他方式与where子句做同样的事情:
results.Where(l => !l.Bool1);
results.Where(l => l.Bool1.Equals(false));
Run Code Online (Sandbox Code Playgroud)
它们具有相同的效果,但没有任何效果.
我在查找核心Java SE包的JRE,JDK和文档方面没有问题,但我不确定从哪里获取源(.java)文件.我正在寻找最新的稳定版本,而不是尖端的开发代码.哪些可用?
我想运行任意基于控制台的子流程,并从单个主流程管理它们.基于控制台的子进程通过stdin,stdout和stderr进行通信,如果在真正的控制台中运行它们,则在按CTRL + C时它们会完全终止.其中一些实际上可能是一个进程树,例如运行可执行文件的批处理脚本,该可执行文件又可以运行另一个可执行文件来完成某些工作.我想重定向他们的标准I/O(例如,以便我可以在GUI窗口中显示他们的输出)并且在某些情况下向他们发送CTRL + C事件,以便他们放弃并彻底终止.
以下两个图首先显示了正常结构 - 一个主进程有四个工作子进程,其中一些有自己的子进程; 然后当其中一个工作人员需要被停止时应该发生什么 - 它和它的所有孩子应该得到CTRL + C事件,但没有其他进程应该收到CTRL + C事件.
流程图http://pics.livejournal.com/clockworksaint/pic/0007z5yr/s640x480.png
此外,我更希望用户看不到额外的窗口.
这是我尝试过的(注意我在使用Python,但C的解决方案仍然有用):
CREATE_NEW_CONSOLE,然后让它产生工作进程.然后在我们要杀死worker时调用GenerateConsoleCtrlEvent(CTRL_C_EVENT,0).不幸的是,CREATE_NEW_CONSOLE似乎阻止我重定向标准I/O通道,所以我没有简单的方法将输出返回到主程序.CREATE_NEW_PROCESS_GROUP,然后让它产生工作进程.然后在我们要杀死worker时调用GenerateConsoleCtrlEvent(CTRL_C_EVENT,0).不知何故,此管理对CTRL + C发送只到主过程,这是完全无用的.仔细观察,GenerateConsoleCtrlEvent表示无法将CTRL + C发送到进程组.CREATE_NEW_PROCESS_GROUP.然后调用GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT,pid)来杀死worker.这并不理想,因为CTRL + BREAK不如CTRL + C友好,可能会导致终止混乱.(例如,如果它是一个Python进程,则不能捕获KeyboardInterrupt并且不会运行finally块.)有什么好方法可以做我想要的吗?我可以看到理论上我可以在第一次尝试的基础上建立并找到其他方法在进程之间进行通信,但我担心它会变得非常尴尬.是否有其他程序可以达到同样效果的好例子?它似乎很简单,不能满足所有这一要求.
我正在尝试从xml输出一个值,这就是我所做的 -
<?php
echo $responseTemp->Items->Item->CustomerReviews->AverageRating;
?>
Run Code Online (Sandbox Code Playgroud)
这输出4.5,但当我将其更改为下面的代码时,它显示为8.为什么它不显示为9?谢谢.
<?php
echo $responseTemp->Items->Item->CustomerReviews->AverageRating*2;
?>
Run Code Online (Sandbox Code Playgroud) Windows无法获取我的.hgignore文件.我从命令行运行Mercurial,"hg status"显示被忽略目录中的大量文件.
.hgignore文件看起来像这样(文件的开头或每行的开头都没有空格).我把它放在存储库的根目录中.
\.pyc$
\.pyo$
\.DS_Store
\.Python
\.installed.cfg
^bin$
^build$
^develop-eggs$
^eggs$
^include$
^lib$
^parts$
^pip-log.txt$
^web/localsettings.py$
Run Code Online (Sandbox Code Playgroud)
我试过用ANSI和UTF-8保存文件,但它似乎没有什么区别.
我知道该文件在Linux上运行正常,Windows中的路径有什么不同吗?
我写了一个简单的python程序
l=[1,2,3,0,0,1]
for i in range(0,len(l)):
if l[i]==0:
l.pop(i)
Run Code Online (Sandbox Code Playgroud)
这给了我错误'列表索引超出范围'在线 if l[i]==0:
经过调试后,我可以发现i它正在增加并且列表正在减少.
但是,我有循环终止条件i < len(l).那我为什么会收到这样的错误呢?
为什么我下载后无法删除文件?
我收到此错误:
文件'exfile.jpgg'因为它正由另一个进程使用.
这是我的代码,
string file_name = "pic.jpg"
WebClient client = new WebClient();
client.DownloadFile("http://picture.com/pic.jpg", file_name);
client.Dispose();
client = null;
pictureBox1.Image = Image.FromFile(File_Name);
pictureBox1.Image = null;
FileInfo MyFile = new FileInfo(File_Name);
MyFile.Delete();
Run Code Online (Sandbox Code Playgroud) 我很好奇为什么<center>HTML中的标记已被弃用.
这<center>是一种通过将容器封装在<center>标签中来快速居中对齐文本和图像块的简单方法,我现在找不到任何更简单的方法来实现它.
任何人都知道如何集中"东西"(不是margin-left:auto; margin-right:auto;和宽度的东西)的任何简单方法,取代的东西<center>?而且,为什么它被弃用了?