从类方法返回引用的最佳实践是什么?是否要在没有引用的情况下返回基本类型,而要通过引用返回的类对象.您推荐的任何文章,最佳实践文章.
我想在OS X,Linux和Windows上注册一个协议处理程序,比如"myapp:",这样当有人在Web浏览器中单击"myapp:// some/params"这样的URL时,就会出现一个python脚本将被召唤并通过这些参数.
显然,这需要在每台机器上安装一些东西来启用它,但只是试图找到一种方法使其在所有三个平台上都能运行.
对于另一个问题,我偶尔会遇到一种误解,似乎在这里出现.一些提问者似乎认为触发器属于数据库,因为事件属于OOP.
有没有人有一个很好的类比来解释为什么这是一个有缺陷的比较,以及误用它的后果?
比尔K.已经正确地击中了它,但也许并没有看到事件和回调函数之间的重要差异的重要性,无论如何.触发器实际上导致代码在每次事件发生时执行; 只有在为一个事件注册时才会发生回调(绝大多数事件都不是这样); 即便如此,在大多数情况下,回调的第一个操作是取消注册自身(或者至少回调包含一个限定出口,因此它只执行一次.)
如果你编写一个触发器,它将在每次事件发生时可靠地执行,因为没有办法注册或注销代码段.
触发器是一种将重复逻辑同步插入执行线程(即同步)的方法.事件是将逻辑推迟到以后的手段(即实现异步性).
在这两种情况下都有例外和缓解,但触发器和回调的基本模式在意图和实现方面大多相反.通常这种区别似乎没有完全沉没.(恕我直言,YMMV).:d
Javascript代码:
function doSomething(v1,v2){ //blah; }
function SomeClass(callbackFunction,callbackFuncParameters(*Array*))={
this.callback = callbackFunction;
this.method = function(){
this.callback(parameters[0],parameters[1]) // *.*
}
}
var obj = new SomeClass( doSomething, Array('v1text','v2text') );
Run Code Online (Sandbox Code Playgroud)
问题是如果我将函数doSomething更改为
function doSomething(v1,v2,v3){ //blah; }
Run Code Online (Sandbox Code Playgroud)
我必须将相应的行(标记为//*.*)更改SomeClass为
this.callback(parameters[0],parameters[1],parameters[2]);
Run Code Online (Sandbox Code Playgroud)
(*.*)无论"doSomething"函数的参数数量如何变化,可以采取哪些措施来避免线路被更改?
非常感谢!
有人可以告诉我在最近的AIX版本上是否有与LD_PRELOAD类似的东西吗?更具体地说,为了测试目的,我需要拦截从我的二进制到time()的调用,返回一个恒定的时间.
有什么地方我可以阅读GLSL从版本1.1到1.2和从1.2到1.3的变化和添加吗?
Google似乎对此感到茫然,我真的不想开始阅读完整的规范.
对于我开发的一些应用程序(然后继续忘记),我一直在编写纯SQL,主要用于MySQL.虽然我在SQLAlchemy中使用了python中的ORM ,但我并没有坚持使用它们.通常是文件或复杂性(从我的观点来看)阻碍了我.
我看是这样的:使用ORM来实现可移植性,如果它只是使用一种类型的数据库则使用普通SQL.在开发需要数据库支持的应用程序时,我真的在寻找何时使用ORM或SQL的建议.
考虑到这一点,使用轻量级包装来处理数据库不一致与使用ORM相比会好得多.
当我需要控制各种异步操作需要多长时间时,我一直在使用这种模式.我并不是专门针对WebRequest(我知道你可以设置超时属性),我只是用它作为模式的一个例子.
var request = WebRequest.Create(someUri);
WebResponse response = null;
request.BeginGetResponse(result =>
{
var asyncRequest = (WebRequest)result.AsyncState;
response = asyncRequest.EndGetResponse(result);
}, request);
DateTime timeout = DateTime.Now.AddSeconds(10);
while (response == null && DateTime.Now <= timeout)
{
Thread.Sleep(0);
}
if (response == null) throw new Exception("Timeout!");
Run Code Online (Sandbox Code Playgroud)
我读到Thread.Sleep()的任何地方,我都知道这是一个很好的事情,但我并不认为这个用例会滥用它.
我知道它有可能超过10秒,但这对我来说并不重要.
那么,这是否真的是一种完成我正在完成的事情的坏方法,如果是这样,那么更好的方法是什么呢?
编辑:也许我应该澄清我想要完成的事情.
目的是控制等待呼叫所花费的最长时间.我知道这会破坏异步调用的目的,但意图永远不是异步的,我只是用它来控制退出调用的方法.
我在IIS7中的默认网站内有一个默认网站和另一个Web应用程序(我们称之为Application2).
我有2个注册域名,比如www.example.com和www.example.net.
我想配置一些东西,当我打开www.example.com时,我得到默认网站,当我打开www.example.net时,我得到默认网站/应用2.
www.example.com -> Default Web Site
www.example.net -> Default Web Site/Application2
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
为什么不能在.NET中创建通用索引器?
以下代码抛出编译器错误:
public T this<T>[string key]
{
get { /* Return generic type T. */ }
}
Run Code Online (Sandbox Code Playgroud)
这是否意味着您无法为通用成员集合创建通用索引器?