小编Der*_*urn的帖子

typeof!=="undefined"vs.!= null

我经常看到JavaScript代码检查未定义的参数等,这样:

if (typeof input !== "undefined") {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

这似乎有点浪费,因为它涉及类型查找和字符串比较,更不用说它的详细程度.这是必要的,因为'undefined'可以重命名.我的问题是:代码如何比这种方法更好:

if (null != input) {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

据我所知,你不能重新定义null,所以它不会意外地破坏.并且,由于!=运算符的类型强制,这将检查undefined和null ...这通常正是您想要的(例如,对于可选的函数参数).然而,这种形式似乎并不普遍,它甚至会导致JSLint对你使用邪恶的!=运算符大喊大叫.为什么这被认为是不好的风格?

javascript coding-style

473
推荐指数
6
解决办法
59万
查看次数

Rails:从控制台检查路径助手的输出

Rails定义了一堆带有命名路由的魔法,为你的路线提供帮助.有时,特别是对于嵌套路由,跟踪给定路由助手方法调用所获得的URL会有点混乱.是否有可能使用Ruby控制台查看给定帮助函数将生成什么链接?例如,给定一个像post_path(post)这样的命名助手,我想看看生成了什么URL.

ruby-on-rails

274
推荐指数
4
解决办法
10万
查看次数

在C++ 11中,pass-by-value是一个合理的默认值吗?

在传统的C++中,将值传递给函数和方法对于大型对象来说是很慢的,并且通常不赞成.相反,C++程序员倾向于传递引用,这更快,但它引入了围绕所有权的各种复杂问题,特别是围绕内存管理(如果对象是堆分配的)

现在,在C++ 11中,我们有Rvalue引用和移动构造函数,这意味着可以实现一个大的对象(比如一个std::vector),它可以通过值传入和传出函数.

那么,这是否意味着默认值应该是传递类型实例的值,例如std::vectorstd::string?自定义对象怎么样?什么是新的最佳做法?

c++ coding-style c++11

137
推荐指数
3
解决办法
2万
查看次数

在Haskell中测试执行IO的函数

现在正在通过真实世界Haskell工作.这是本书早期练习的解决方案:

-- | 4) Counts the number of characters in a file
numCharactersInFile :: FilePath -> IO Int
numCharactersInFile fileName = do
    contents <- readFile fileName
    return (length contents)
Run Code Online (Sandbox Code Playgroud)

我的问题是:你如何测试这个功能?有没有办法制作"模拟"输入而不是实际需要与文件系统进行交互来测试它?Haskell强调纯函数,我必须想象这很容易做到.

testing haskell

34
推荐指数
5
解决办法
5453
查看次数

IRB有哪些替代品?

在python世界中,有许多替代python解释器可以添加很酷的附加功能.一个特别有用的示例是bpython,它添加了动态语法突出显示,自动提取文档,并显示实时自动完成信息.在Ruby世界中,我还没有发现任何添加到基本IRB解释器的项目,甚至是这些功能的一部分.我只是不够努力,或者这只是Ruby社区缺乏的东西?

ruby irb

33
推荐指数
2
解决办法
8115
查看次数

实现Go goroutines或Go频道的C++库?

我正在使用一个中型C++代码库,它目前完全是单线程的.然而,现在是追求并发和并行性以获得性能提升的时候了.我对Google的Go编程语言的并发模型非常感兴趣,它具有非常轻量级的goroutine和一个通信通道系统.

遗憾的是,由于各种完全正确的原因,该项目需要保留在C++中.所以我的问题是:是否有一个C++库近似于并行的Go范例?具体来说,是否有可用于C++的goroutine或go渠道的近似值?我的后备计划只是使用boost :: thread.

有问题的应用程序是财务预测领域的长期专有模拟.它通常受CPU限制,但在新数据可用时也会在IO上被阻止.所涉及的许多计算不依赖于先前的结果,并且可以相当容易地并行运行.能够在分布式环境中运行应用程序是一个长期目标,但不是需要立即解决的目标.

c++ concurrency go

26
推荐指数
2
解决办法
8554
查看次数

Haskell模式匹配空集

我正在将一些Haskell代码从使用列表更改为集合.我认为,我理解所需的一切,但我不确定如何在套装上进行模式匹配.列表有这个很好的文字语法,似乎很难用Set构造函数模拟.例如,我可能有一些像这样的代码:

foo [] = []
foo x = other_thing
Run Code Online (Sandbox Code Playgroud)

如何编写此代码,以便使用集而不是列表?

haskell pattern-matching

18
推荐指数
2
解决办法
3143
查看次数

语法在Emacs中突出显示vimrc文件?

所以,这可能是一个异端问题,但我正在寻找一种处理.vimrc文件语法高亮的Emacs模式.由于显而易见的原因,这个特别的问题对谷歌来说已经证明是非常困难的,但在我看来,有人会在两位编辑之间20多年的公开战争中写出这样一种模式.有任何想法吗?

emacs

18
推荐指数
1
解决办法
1358
查看次数

有没有办法在协议中添加泛型类型参数?

从Xcode 7开始,Objective-C为类引入了泛型类型参数.有没有办法将泛型与Objective C协议一起使用?我还没有找到一种明显的方法来做到这一点,因为@interface MyClass<ObjectType>已经采用了相应的协议(例如@protocol MyProtocol<NSObject>).

示例:我想转换代码如下:

@protocol MYObjectContainer
- (id)objectAtIndex:(NSUInteger)index;
@end
Run Code Online (Sandbox Code Playgroud)

像这样的代码:

@protocol MYObjectContainer
- (ObjectType)objectAtIndex:(NSUInteger)index;
@end
Run Code Online (Sandbox Code Playgroud)

对于常规类,这是可能的(例如,参见NSArray).

generics objective-c

16
推荐指数
1
解决办法
3716
查看次数

Meteor:如何判断数据库何时准备就绪?

我希望在页面加载后尽快执行Meteor集合查询.我尝试的第一件事是这样的:

Games = new Meteor.Collection("games");
if (Meteor.isClient) {
  Meteor.startup(function() {
    console.log(Games.findOne({}));
  }); 
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用(它打印"undefined").从JavaScript控制台调用时,几秒钟后相同的查询工作.我假设在数据库准备好之前存在某种延迟.那么如何判断此查询何时成功呢?

OSX 10.8和Chrome 25下的Meteor版本0.5.7(7b1bf062b9).

meteor

14
推荐指数
3
解决办法
1万
查看次数