另一个问题的讨论让我想知道:Perl缺少其他编程语言的异常系统是什么?
Perl的内置异常有点特别,因为它们像Perl 5对象系统一样,在事后的想法中加以分类,并且它们超出了其他不专门用于异常的关键字(eval和die).
与具有内置try/throw/catch类型语法的语言相比,语法可能有点难看.我通常这样做:
eval {
do_something_that_might_barf();
};
if ( my $err = $@ ) {
# handle $err here
}
Run Code Online (Sandbox Code Playgroud)
有几个CPAN模块提供语法糖来添加try/catch关键字,并允许轻松声明异常类层次结构等等.
我在Perl的异常系统中看到的主要问题是使用特殊的全局$@来保存当前错误,而不是catch从范围的角度来看可能更安全的专用类型机制,尽管我从来没有亲自遇到任何问题$@得到了.
我有一些代码向另一个线程提交请求,该线程可能会也可能不会将该请求提交给另一个线程.这产生了一种返回类型Future<Future<T>>.是否有一些非令人发指的方式立即将其转变为Future<T>等待整个未来链条的完成?
我已经在使用Guava库来处理其他有趣的并发内容,并且作为Google Collections的替代品并且它运行良好,但我似乎无法找到适合这种情况的东西.
在python中,字符串是否可变?该行someString[3] = "a"抛出错误
TypeError:'str'对象不支持项目分配
我可以看到为什么(因为我可以编写someString [3] ="test",这显然是非法的)但是有一种方法可以在python中执行此操作吗?
我正在努力通过编译器: Abdulaziz Ghuloum的后端到前端(并再次回到前面).它似乎缩写为完整课程/研讨会中的预期,所以我试图自己填写这些内容.
例如,我试图在DrScheme的R5RS风格中使用他的测试框架,但它似乎不喜欢宏的东西:
src/ghuloum/tests/tests-driver.scm:6:4: read: illegal use of open square bracket
Run Code Online (Sandbox Code Playgroud)
我已经阅读了他关于课程的介绍文章,编译器构建的增量方法,它对所使用的技术进行了很好的概述,并提到了一些可能需要为"额外信用"实现的功能的方案,但他没有没有提到他在课程中使用的计划.
更新
我还在深入研究原始问题(调查以下Eli建议的Petit Scheme等选项),但发现了一个与Gholoum工作有关的有趣链接,所以我将其包括在内.
[Ikarus Scheme](http://en.wikipedia.org/wiki/Ikarus_ (Scheme_implementation ))是Ghuloum的想法的实际实现,并且似乎是他的博士学位的一部分.工作.它应该是R6RS的首批实现之一.我现在正在尝试安装Ikarus,但是配置脚本不想识别我的系统安装的libgmp.so,所以我的问题仍未得到解决.
例
以下示例似乎适用于使用Pretty Big在DrEd中运行的PLT 2.4.2
(require lang/plt-pretty-big)
(load "/Users/donaldwakefield/ghuloum/tests/tests-driver.scm")
(load "/Users/donaldwakefield/ghuloum/tests/tests-1.1-req.scm")
(define (emit-program x)
(unless (integer? x) (error "---"))
(emit " .text")
(emit " .globl scheme_entry")
(emit " .type scheme_entry, @function")
(emit "scheme_entry:")
(emit " movl $~s, %eax" x)
(emit " ret")
)
Run Code Online (Sandbox Code Playgroud)
尝试用#lang方案替换require指令会导致错误消息
foo.scm:7:3: expand: …Run Code Online (Sandbox Code Playgroud) 我试图了解Symfony 1.4中的表单框架.我已经阅读了"更多与symfony"一书中非常详细的部分,但我仍然不确定如何实现简单的"更改密码"功能.
要求非常基本,
new_password,和confirm_new_password.两者都是输入字段.new_password字段将被验证为包含字母和数字的6到30个字符之间的字符串.confirm_new_password字段将被验证以new_password准确匹配该字段.现在,我现在实现了这个,
new_password字段中添加字符串验证器以检查字符串长度.confirm_new_password字段以确保填写.confirm_new_password在该new_password字段有效之前我不想验证该字段.现在到了我的问题.在阅读了上面提到的文章之后,我开始认为我应该在单个小部件或子形式中包含两个字段,因为它们相互依赖,而另一个则无用.
我想知道人们的想法是什么,如果有人实施了,他们是如何做到的?
谢谢
注意:没有current_password字段,因为这是我的管理区域.
我正在处理一个python编写的服务器,它会锁定并停止工作,包括记录.我想知道是否有一个python相当于java的"kill -3"信号,至少打印出当前的堆栈跟踪.
今天打开了LinkedHashSet源代码,发现了一些有趣的事情:
public class LinkedHashSet<E>
extends HashSet<E>
implements Set<E>, Cloneable, java.io.Serializable {
Run Code Online (Sandbox Code Playgroud)
问题是:当HashSet已经是Set时,为什么他们需要"extends HashSet"和"implements Set"?
我想编写一个 WCF Web 服务,可以通过线路将文件发送到客户端。所以我有一个发送流响应的设置。这是我在客户端的代码:
private void button1_Click(object sender, EventArgs e)
{
string filename = System.Environment.CurrentDirectory + "\\Picture.jpg";
if (File.Exists(filename))
File.Delete(filename);
StreamServiceClient client = new StreamServiceClient();
int length = 256;
byte[] buffer = new byte[length];
FileStream sink = new FileStream(filename, FileMode.CreateNew, FileAccess.Write);
Stream source = client.GetData();
int bytesRead;
while ((bytesRead = source.Read(buffer,0,length))> 0)
{
sink.Write(buffer,0,length);
}
source.Close();
sink.Close();
MessageBox.Show("All done");
}
Run Code Online (Sandbox Code Playgroud)
一切都进展顺利,没有错误或异常。问题是,当我打开正在传输的 .jpg 文件时,该文件被报告为“已损坏或太大”。
我究竟做错了什么?
在服务器端,这是发送文件的方法。
public Stream GetData()
{
string filename = Environment.CurrentDirectory+"\\Chrysanthemum.jpg";
FileStream myfile = File.OpenRead(filename);
return myfile;
} …Run Code Online (Sandbox Code Playgroud) 我有一些MVC代码将EF 3.5对象序列化为匿名类型,以便作为JSON结果返回到我页面上的AJAX调用.我遇到的障碍是当我通过JSON将对象发送回服务器时(并让ModelBinder将它反序列化为我的EF类型),我必须手动在我的Entity Framework上下文中更新它.或者至少那就是我现在正在做的事情.它没有EntityKey,因此附加它失败.我最终必须查找旧对象并按属性更新它的属性.围绕这个想法吗?是用我的对象传递EntityKey的解决方案吗?
这就是我所拥有的:
public void Update(Album album)
{
using (var db = new BandSitesMasterEntities())
{
var albumToUpdate = db.Album.First(x => x.ID == album.ID);
albumToUpdate.AlbumTitle = album.AlbumTitle;
albumToUpdate.Description = album.Description;
albumToUpdate.ReleaseYear = album.ReleaseYear;
albumToUpdate.ImageURL = album.ImageURL;
albumToUpdate.OtherURL = album.OtherURL;
db.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我想做的事情,或类似的事情:
public void Update(Album album)
{
using (var db = new BandSitesMasterEntities())
{
db.Attach(album)
db.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个类(A)在其构造函数和析构函数中访问(间接通过静态方法)另一个类(B)中的静态变量(STL容器).
对象可以是全局的,全局常量,另一个类的静态成员,存储在其他类(可能本身具有全局或静态实例)中,或者基本上可以是c ++对象的任何其他位置.
如果A对象在B中的静态成员之前构造或在B中的静态成员之后被破坏,则会在某些时候导致崩溃(通常是访问冲突).
有没有一些方法,以保证(除了那些已经泄漏,因为按照定义,"迷失"等不会被破坏任何方式)A类的所有实例构造之后和在B的静态变量破坏?
我已经看到了一些解决方案,用于使特定变量在另一个之前/之后被构造/销毁,但是不是给定类型的所有实例的一般情况,因此我不确定如何处理它.
java ×2
python ×2
.net ×1
asp.net-mvc ×1
c# ×1
c++ ×1
collections ×1
concurrency ×1
debugging ×1
destructor ×1
exception ×1
forms ×1
frameworks ×1
guava ×1
hashtable ×1
json ×1
perl ×1
php ×1
racket ×1
scheme ×1
stream ×1
streaming ×1
symfony1 ×1
syntax ×1
wcf ×1