草庐IT

min_ending_here

全部标签

ruby - 为什么 array.min 这么慢?

我注意到array.min看起来很慢,所以我针对我自己的简单实现做了这个测试:require'benchmark'array=(1..100000).to_a.shuffleBenchmark.bmbm(5)do|x|x.report("lib:"){99.times{min=array.min}}x.report("own:"){99.times{min=array[0];array.each{|n|min=nifn结果:Rehearsal-----------------------------------------lib:1.5310000.0000001.531000(1.5

ruby-on-rails - ruby rails : Converting "SomeWordHere" to "some word here"

我知道你可以这样做:"SomeWordHere".underscore.gsub("_","")得到“这里的一些话”。我认为对于如此简单的事情来说可能有点太多了。是否有更有效的方法(也许是内置方法?)将“SomeWordHere”转换为“此处的某个词”? 最佳答案 方法underscore和humanize是为表、类/包名称等之间的转换而设计的,您最好使用自己的代码进行替换以避免惊喜。查看评论。"SomeWordHere".underscore=>"some_word_here""SomeWordHere".underscore.h

__END__ 之后的 Ruby 数据范围

我将这个Ruby技巧与__END__和DATA结合使用,将一些数据放入我的程序文件中:classFoodefinitialize()putsDATA.read.inspectendendputsDATA.read.inspectFoo.new__END__test这会生成以下输出:"test"""我曾假设DATA在全局范围内是相同的,但在类内部它没有任何内容。我将如何在类内访问__END__之后的数据(除了使用全局变量的明显且丑陋的解决方案之外)?ADDED:我看到读取DATA两次如何让我第二次没有任何反应。我可以使用rewind回到开头,但是read会给我程序的全部源代码。在DATA

ruby - 如果没有将 `begin ... end` 用作代码块,Ruby 的 `rescue` 是否会产生意想不到的后果?

我偶尔会看到begin...endblock在ruby​​中使用而没有任何rescue,else,ensure等之间的语句。例如:foo=beginwhatever=3"great"42end编码人员的意图似乎是使用begin...endblock只是为了它的block分组质量(就好像begin是do)。我个人认为这种用法有点违反最小意外原则(begin对我来说意味着异常处理)。以这种方式使用begin...end是否有任何意想不到的后果?begin...endblock是否有任何语义差异(可能在异常处理中?),使这种用法变得危险?Ruby的语法非常微妙,如果这里有奇怪的陷阱,我也不会

没有 do end 的 Ruby 多行代码块

我是Ruby的初学者,所以很抱歉问这么简单的问题,但是这段代码有什么问题吗-3.upto(9){print"Hello"puts"World"}或3.upto(9){|n|print"Hello"putsn}它工作得很好,但我看到的大多数代码示例都使用了的语法3.upto(9)do|n|print"Hello"putsnend仅对单个语句使用花括号只是惯例吗?来自C/C#的第一个对我来说似乎更自然,但在罗马时! 最佳答案 这两种语法之间存在细微差别。{}的优先级高于do...end。因此,以下将传递bar和一个block到方法foo

ruby - Ruby 中使用的保留字 BEGIN 或 END 是什么?

这是一个很难找到的词,因为在大多数情况下,它们在搜索过程中并不敏感。除了文档之外,我能找到的最好的是IRB中的测试。BEGIN{putsx=10}10 最佳答案 作为所有keywordsBEGIN和END记录为publicinstancemethodsofObject(即使您不会看到它们从Object.public_instance_methods返回)BEGINDesignates,viacodeblock,codetobeexecutedunconditionallybeforesequentialexecutionofthep

ruby - 是什么启发了 Ruby 的 =begin .. =end 注释 block 语法?

我知道很多Ruby的灵感来自Perl(例如,STDIN作为全局常量)或Unixshell(例如heredoc语法)。但我不知道block注释语法从何而来。语法:=beginThisisacommentlineitexplainsthatthenextlineofcodedisplaysawelcomemessage=end这是从哪里来的?我对Perl的了解很粗略。是Perl吗? 最佳答案 是的,这是PerlPerl使用=beginThisisacommentlineitexplainsthatthenextlineofcodedis

ruby - 为什么 [20, ..., 13, 14].min(2) => [13, 20]?

[20,32,32,21,30,25,29,13,14].min(2)#=>[13,20]为什么不是[13,14]?我如何得到我想要的两个最小元素(线性时间)?Thedoc的句子“如果给出了n个参数,则最小n个元素作为数组返回”对我来说不是很清楚,但我认为它说的是min(2)应该给我最小的两个元素。我找不到太多关于它的信息,但是thisthread,这可能是起源,似乎同意我的看法,并说它应该返回与sort.first(n)相同的结果。,它没有:[20,32,32,21,30,25,29,13,14].sort.first(2)#=>[13,14]很抱歉,这个愚蠢的问题和“大”示例很抱歉

ruby - Vim:突出显示 Ruby 中的关键字对(def/end、do/end 等)

InoneoftheEclipse-basededitorsthatItriedoutrecently(IthinkitwasRubyMine),whenaRubykeywordthateitheropenedorclosedamethodorblockwasselected,thecorrespondingopen/closekeywordwashighlighted.类似于Vim能够突出显示相应的开/关括号的方式。例如,如果我选择了“def”,它会突出显示相应的“end”。它也适用于do/endblock。这真的很方便,特别是对于那些很长且有时嵌套很重的Rspec文件。有人知道如何

Ruby 模块 - 包含 do end block

有一个模块MyModule:moduleMyModuleextendActiveSupport::Concerndeffirst_methodenddefsecond_methodendincludeddosecond_class_methodendmoduleClassMethodsdeffirst_class_methodenddefsecond_class_methodendendend当某些类包含这个模块时,它将有2个方法公开为实例方法(first_method和second_method)和2个类方法(first_class_method和second_class_metho