我最近碰到了这个问题:
我总是这样使用注入(我知道(0)部分是可选的,可以省略)
array = [13,23,13]
#=> [13, 23, 13]
array.inject(0) { |sum,i| sum+i }
#=> 49
Run Code Online (Sandbox Code Playgroud)
我偶然发现你可以使用:
array.inject(:+)
#=> 49
array.inject(:-)
#=> -23
array.inject(:*)
#=> 3887
array.inject(:/)
#=> 0
Run Code Online (Sandbox Code Playgroud)
谷歌上搜索这个问题我发现了一篇关于注入的好文章,但没有提到我曾经尝试过的内容....
有人可以向我解释或者提供一些关于我刚用过的注入命令的信息吗?
我想在每个渲染的视图上出现一些视图,但是没有重复代码或违反规范,我似乎无法找到实现这一目标的方法.
这是我当前的代码,在每个视图中调用:
def ImOnABoat::Views
def layout
html do
head do title "Petstore" end
body do yield end
end
end
def navigation
p "Welcome to our tiny petstore!"
end
def poodle
navigation # Have to duplicate this in every view
p "We have a poodle!"
end
def fluffy_bunny
navigation # Have to duplicate this in every view
p "Come see-- OH CRAP IT'S A VELOCIRAPTOR!"
end
end
我也可以通过允许公共块在体外渲染来使其工作,但这违反了规范,并且最终可能会破坏一些刮刀脚本.
def layout def head do title "Petstore" end nav # This is not …
我记得有一段时间阅读一篇很棒的文档,解释了Git按原样设计的理由.至少,我很确定它是特定于Git的,但它可能只适用于DVCS概念.它并没有那么专注于你会投入的实际命令; 相反,它主要关注如何解决脱机工作的问题,使人们在版本之间保持最新版本,跟踪分支之间的变化等,以及Git如何解决这些问题.(同样,它可能是一个不同的DVCS,但我认为它是Git)
从本质上讲,该文档是一个随便写的故事,讲述程序员如何跟踪他们的文件,以及Git(或其他)如何帮助解决这些问题.我记得很早就可以将一个文档的旧版本保存在某个"备份"文件夹中,在文件中标记以跟踪每个版本,以及如何在编码过程中处理错误一个新功能,所以"跟踪文件"增长到包括分支.
我非常喜欢阅读它,因为它清楚地解释了某些功能背后的许多原因,并且是一个伟大的"版本控制故事".我想再次找到它.
当我用JSON编写函数时,为什么我必须将它包含在匿名函数中?
这有效:
$.ajax({
type: 'POST',
url: 'http://www.myurl.com',
data: data,
success: function(data) {
alert(data);
}
});
Run Code Online (Sandbox Code Playgroud)
这不起作用:
$.ajax({
type: 'POST',
url: 'http://www.myurl.com',
data: data,
success: alert(data)
});
Run Code Online (Sandbox Code Playgroud)
谢谢
我试图将工作树包含在结帐中,如下所示:
git checkout --work-tree=/elsewhere
但是Git一直抱怨我没有设置工作树,说fatal: This operation must be run in a work tree.
我显然正在设置一个工作树,为什么Git无视这个论点呢?
我在下面的相对简单的任务中遇到了一个有趣的问题.开头的每个带括号的块都计算为nil,留下应该分配给Rubygame::Surface.new的值@image.不幸的是,在我设置的下一行@rect,它会抛出NoMethodError,因为它@image是nil.
@image = (image unless image.nil?) or
(Rubygame::Surface.autoload(image_file) unless image_file.nil?) or
(Rubygame::Surface.autoload("#{@name}.png") unless @name.nil?) or
Rubygame::Surface.new([16, 16])
@rect = Rubygame::Rect.new [0, 0], [@image.width, @image.height]
Run Code Online (Sandbox Code Playgroud)
类似的测试按预期运行IRB工作,所以我很确定'或'语句是格式良好的,但我无法弄清楚为什么当其他所有内容都为零时它不会返回新的Surface .