Tag: 语法

如果没有空白的“rescue”块,Ruby块/命令会无声地失败

假设我想要一个呼叫运行,如果它失败了,那没什么大不了的; 程序可以继续没有问题。 (我知道这通常是不好的做法,但想象一个假设的,快速的一次性脚本,而不是一个大项目) 我被教导这样做的方式是: begin thing_to_try rescue # awkward blank rescue block end next_thing 当然,还有其他方法可以做到这一点,包括使用ensure和类似的东西。 但有没有办法让方法调用/阻止静默失败而没有一个凌乱的空白块?

Ruby:for循环和每个循环之间有什么区别?

可能重复: 对于Ruby中的每个人 假设我们有一个数组,就像 sites = %w[stackoverflow stackexchange serverfault] 有什么区别 for x in sites do puts x end 和 sites.each do |x| puts x end ? 对我来说,它们似乎做了同样的事情, for循环的语法对我来说更清晰。 有区别吗? 在什么情况下这将是一个大问题?

识别Treetop语法中的Ruby代码

我正在尝试使用Treetop来解析ERB文件。 我需要能够处理如下行: 由于Treetop是用Ruby编写的,你用Ruby编写Treetop语法,Treetop中已经有一些现有方法可以说“嘿,在这里查找Ruby代码,并给我分解”,而不必编写单独的规则来处理Ruby语言的所有部分? 我正在寻找一种方法,在我的.treetop语法文件中,有类似的东西: rule erb_tag “” { def content … end } end 其中ruby_code由Treetop提供的某些规则处理。 编辑: 其他人使用Ruby-lex解析ERB,但是我在尝试重现他所做的事情时遇到了错误。 在生成解析器类时,rlex程序没有生成完整的类。 编辑:对,所以你很多都很郁闷,但感谢你的信息。 :)对于我的Master的项目,我正在编写一个测试用例生成器,需要使用ERB作为输入。 幸运的是,出于我的目的,我只需要识别ERB代码中的一些内容,例如if语句和其他条件以及循环。 我想我可以提出Treetop语法来匹配它,但需要注意的是Ruby并不完整。

Ruby:布尔正则表达式方法的正确语法是什么?

检查模式的字符串的方法的正确语法是什么,如果正则表达式匹配,则返回true或false? 基本理念: def has_regex?(string) pattern = /something/i return string =~ pattern end 使用案例: if has_regex?(“something”) # woohoo else # nothing found: panic! end

Ruby试图掌握一种新的符号。 (注入(:)与选择(&:偶数?);为什么有&?)

所以,我刚学会了,而不是写下这样的东西: [1,2,3,4,5].inject {|x,y| x + y} => 15 我可以写 [1,2,3,4,5].inject(:+) => 15 我也学会了而不是写作 [1,2,3,4,5].select {|x| x.even?} => [2,4] 我可以写 [1,2,3,4,5].select(&:even?) => [2,4] 我的问题是为什么一个(选择)使用&而另一个(注入)不使用。 我确定:是因为even? 和+在符号处理,但我喜欢澄清为什么&在一个中使用以及为什么使用: 。 另外,我知道我可以做的不只是inject和select这些符号。 非常感谢!

是否有Ruby语法的权威参考文档?

我正在寻找关于Ruby语法的权威文档。 我知道核心API和标准库的权威文档,但语法本身呢? 例如,这样的文档应该包括:保留字,字符串文字语法,变量/类/模块的命名规则,所有条件语句及其排列等等。 我知道有很多书和教程,是的,但是每一本都是教程,每一本都有不同的深度和焦点。 他们都必须通过简洁和叙事流程,忽略作者认为无关紧要的语言的某些细节。 例如,您是否知道您可以使用没有初始案例值的case语句,然后它将执行第一个true when子句? 任何给定的Ruby书籍或教程可能会也可能不会涵盖案例语法的特定鲜为人知的function。 关于案例陈述,“Ruby Ruby”一节中没有对此进行讨论。 但这只是一个小例子。 到目前为止,我发现的最好的文档是rubyspec项目,它似乎是尝试为该语言编写完整的测试套件。 这还不错,但从实际角度来看,作为开发我自己项目的开发人员有点困难。 我只是遗漏了什么或者是否真的没有明确可读的文档来定义整个Ruby语法?

是否有ruby单行“如果x返回”?

有很多我需要添加的地方 if this_flag return end 可以用ruby在一行上完成吗?

%运算符在N%2中的Ruby中做了什么?

if counter % 2 == 1我试图解码这一行 – 它是一个Rails项目,我试图找出% if在这个if语句中的作用。

开始吧。 。 。 结束而表示’阻止’?

temp = 98.3 begin print “Your temperature is ” + temp.to_s + ” Fahrenheit. ” puts “I think you’re okay.” temp += 0.1 end while temp < 98.6 在上面的例子中,开始和结束之间的所有内容是一个块吗? 我仍然困惑什么是块。 如果你不能把它称为块,你会在开始和结束之间将那段代码称为什么? 把它称为块是否可以?

语法突出显示

我正在寻找一个通用的语法高亮库,输出到html。 它是在一个ruby应用程序中使用,所以一个ruby库会很好,但是一个很好的实用程序可以通过管道输入和输出 还需要猜测适当的语言来自己突出显示