是否所有提升异常都来自std :: exception?如果不是,它们都来自某个基类异常类?
我需要在我的网站上创建2个按钮来改变浏览器缩放级别(+)( - ).由于图像大小和布局问题,我正在请求浏览器缩放而不是css缩放.
嗯,这有可能吗?我听说过相互矛盾的报道.
如何对来自音频文件(.mp3,wav)而不是麦克风的语音进行语音识别?
我希望能够从C#.NET和Delphi中做到这一点.
我有一个函数接受一个参数,可以是单个项目或双项目:
def iterable(arg)
if #arg is an iterable:
print "yes"
else:
print "no"
Run Code Online (Sandbox Code Playgroud)
以便:
>>> iterable( ("f","f") )
yes
>>> iterable( ["f","f"] )
yes
>>> iterable("ff")
no
问题是字符串在技术上是可迭代的,所以我不能在尝试时捕获ValueError arg[1].我不想使用isinstance(),因为这不是很好的做法(或者我被告知).
我想在Google地图上添加叠加图片.该图像是我生成的SVG文件(带有SVGFig的Python).
我使用以下代码:
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(48.8, 2.4), 12);
// ground overlay
var boundaries = new GLatLngBounds(new GLatLng(48.283188032632829, 1.9675270369830129), new GLatLng(49.187215000000002, 2.7771877478303999));
var oldmap = new GGroundOverlay("test.svg", boundaries);
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.addOverlay(oldmap);
}
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,它适用于Safari 4,但它不适用于Firefox(使用Safari 3,背景不透明).
有没有人知道如何覆盖SVG?
PS1:我喜欢读一些作品本或swa.ethz.ch/googlemaps的源代码,但似乎他们必须使用JavaScript代码来分析SVG并添加一个所有元素一个(但我没有理解所有来源...).
PS2:SVG由不同的填充路径和圆圈组成,具有透明度.如果没有解决方案覆盖我的SVG,我可以使用2种替代解决方案:
但我真的不喜欢第一种解决方案,因为位图的质量很差,而且生成抗锯齿的时间也是如此.
对于第二种解决方案,弧,椭圆和圆必须分解成小的折线.为了取得好成绩,很多都是必要的.但是我有大约3000个圆弧和圆圈来绘制,所以......
最近,我正在与另一个程序员讨论重构一个充满"if"语句的巨大(1000行)方法的最佳方法.
代码是用Java编写的,但我想这个问题也可能发生在C#等其他语言中.
为了解决这个问题,他建议使用责任链模式.他建议有一个基础"处理程序"类.然后,"Handler1","Handler2"等将扩展"Handler".
然后,处理程序将具有"getSuccessor"方法,该方法将返回null(如果它是链的最后一个)或链的下一个Handler.
然后,"的handleRequest(请求)"功能,要么处理请求,或者将它传递给下一个链条,如果没有以前的解决方案的工作,它将返回空值只是或抛出异常.
要向链中添加新的Handler,编码器将转到链的最后一个元素并告诉它有一个新元素.要做某事,他只需要在链的第一个元素上调用handleRequest.
为了解决这个问题,我建议使用不同的方法.
我还有一个基础"Handler"类,带有"Handler1","Handler2",就像之前提到的方法一样.
但是,没有"getSuccessor"方法.相反,我有一个Collection类,其中包含一个处理程序列表(Vector,一个ArrayList,或者在这种情况下最好的).
handleRequest函数仍然存在,但它不会将调用传播给下一个处理程序.它只会处理请求或返回null.
要处理请求,可以使用
for(Handler handle : handlers){
result = handle.handleRequest(request);
if(result!=null) return result;
}
throw new CouldNotParseRequestException(); //just like in the other approach
Run Code Online (Sandbox Code Playgroud)
或者,为了防止代码重复,可以将"parseRequest(request)"方法添加到集合类中.要添加一个新的处理程序,可以转到集合构造函数(或static {}块,或者等价物)并简单地添加代码"addHandler(new Handler3());".
对于这种方法,我错过了什么样的责任链优势?哪种方法最好(假设是一个最好的方法)?为什么?每种设计方法可能导致哪些潜在的错误和问题?
对于那些需要上下文的人来说,这是原始代码的样子:
if(x instanceof Type1)
{
//doSomething1
} else if(x instanceof Type2)
{
//doSomething2
}
//etc.
Run Code Online (Sandbox Code Playgroud) throw在函数签名中使用C++ 关键字被认为是不良做法的技术原因是什么?
bool some_func() throw(myExc)
{
...
if (problem_occurred)
{
throw myExc("problem occurred");
}
...
}
Run Code Online (Sandbox Code Playgroud) 第一篇文章,所以玩得好!
我有一个关于Python词典的相当基本的问题.我希望有一些dict值在另一个变量被更改时更新(或者至少在下次调用时重新计算) - 例如:
mass = 1.0
volume = 0.5
mydict = {'mass':mass,'volume':volume}
mydict['density'] = mydict['mass']/mydict['volume']
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,mydict ['density']只返回2.0.如果我改变mydict ['mass'] = 2.0,密度将不会更新.很好 - 我可以理解为什么 - 密度是由传递给声明时的值定义的.所以我想也许我可以用lambda表达式来解决这个问题,例如(为可怕的代码道歉!):
mydict['density_calc'] = lambda x,y: x/y
mydict['density'] = mydict['density_calc'](mydict['mass'],mydict['volume'])
Run Code Online (Sandbox Code Playgroud)
但同样,这只会返回原始密度,尽管改变了mydict ['mass'].作为最后的尝试,我尝试了这个:
def density(mass,volume): return mass/volume
mydict['density_calc'] = lambda x,y: density(x,y)
mydict['density'] = mydict['density_calc'](mydict['mass'],mydict['volume'])
Run Code Online (Sandbox Code Playgroud)
再一次,没有骰子.这似乎是一个非常简单的问题需要解决,所以提前道歉,但如果有人能帮助我,我会非常感激!
干杯,
戴夫