Tag: 语法

Ruby / Rails哈希火箭语法

有人能指出我刚才解释Ruby / Rails中不同语法特征的好基础吗? 例如,我看到的一些例子是怎么做的myMethod(x: “z”)和其他的myMethod(:x => “x”) ? 一般来说,语法对我来说似乎很奇怪,只是想快速一目了然地将其用作备忘单。

学习树顶

我正在尝试自学Ruby的Treetop语法生成器。 我发现,不仅文档中的“最佳”文档非常稀疏,而且它似乎并不像我希望的那样直观。 在高层次上,我真的很喜欢比现场文档或video更好的教程,如果有的话。 在较低的层次上,这是一个我根本无法工作的语法: grammar SimpleTest rule num (float / integer) end rule float ( (( ‘+’ / ‘-‘)? plain_digits ‘.’ plain_digits) / (( ‘+’ / ‘-‘)? plain_digits (‘E’ / ‘e’) plain_digits ) / (( ‘+’ / ‘-‘)? plain_digits ‘.’) / (( ‘+’ / ‘-‘)? ‘.’ plain_digits) ) { def eval text_value.to_f end } end […]

Array()的文档在哪里?

浏览规则源代码,我注意到他们正在调用Container(:和) ,这是我很少看到的。 事实上,我见过的唯一另一个地方就是制作gem 快速浏览显示Container子类Array ,以及快速跳转到Pry显示Array(:anything) #=> [:anything] 。 另外快速浏览一下Array的ruby文档并没有对这个问题有所了解。 Array()调用了什么方法,它在哪里记录,如何定义这样的方法,它在ruby中被认为是“坏forms”?

在Ruby on Rails上解释Iterator语法

我开始学习Ruby on Rails并发现自己对语法感到困惑,所以我不得不阅读一些Ruby语法。 我从http://www.cs.auckland.ac.nz/references/ruby/doc_bundle/Manual/man-1.4/syntax.html学习了语法: method_call do [`|’ expr…`|’] expr…end 他们称之为迭代器。 我理解一个迭代器运行循环,但我不明白我应该如何阅读这个或者在这个语法中发生了什么。 我一直在RoR的截屏video中看到它并且这些词语有意义,但我实际上不知道发生了什么。 谁有人向我解释这个? 编辑:示例 respond_to do |format| format.json format.xml { render :xml => @posts } end

一个关于ruby哈希的恼人问题

为什么ruby有时会将哈希解释为代码块? 例如,我有一个名为’required’的函数,它接受一个哈希所以我做: required { base_uri: String, endpoints: String, destination: String, credentials: Hash} 它认为它是一块代码和错误的unexpected tSYMBEG 。 修复此问题的唯一方法是在其周围放置括号,使其显示为: required({ base_uri: String, endpoints: String, destination: String, credentials: Hash}) 然后它开始将其作为哈希读取(就像我想要的那样)。 我并不打算在哈希周围放置括号,令人恼火的是它不一致,有时是有效的,有时则不然。 这是怎么回事?

Ruby语法问题:Rational(a,b)和Rational.new!(a,b)

今天我在Rational类中遇到了奇怪的ruby语法: Rational(a,b) (注意缺少.new()部分与普通的Ruby语法相比)。 与正常的new语法相比,这意味着什么呢? 更重要的是,我如何在我自己的代码中实现这样的东西,为什么我会实现这样的东西? 特别是对于Rational类,为什么使用这种语法而不是正常的实例化? 为什么new方法在理性类中是私有的? (以及我如何/为什么要在我自己的ruby代码中执行此操作?)提前感谢您的回答,特别是因为我问了很多问题。

为什么Ruby使用自己的语法来安全导航操作符?

Ruby 2.3.0引入了安全的导航语法 ,通过引入一个仅在前一个语句的值不为nil时调用该方法的新运算符,简化了对链式方法调用的零处理。 这是一个已经存在的function,例如在C#,Groovy和Swift中。 例如在Groovy中 ,语法是 foo?.bar 这基本上意味着结果值是foo.bar的结果值,除非foo为null ,在这种情况下返回值也为null ,因此不会抛出exception。 此外, C# (称为空条件运算符 )和Swift (称为可选链接表达式 )使用此表示法。 所以语法似乎在其他语言中非常标准。 现在,为什么在Ruby中语法是 foo&.bar 代替?

如果条件语句出现在表达式之前或之后,这是否重要?

对不起,如果这是一个愚蠢的问题,但我是一个C#家伙摸索着ruby的方式.. 在ruby中,我注意到很多人这样做: do_something(with params) if 1 = 1 这和之间有什么区别(甚至是轻微的): if 1 = 1 do_something(with params) 还是为了更清晰而写的是同一件事?

什么是<< – ruby?

从Ruby_Newbie指南到符号: 作者试图展示attr_writer方法的简化实现。 #!/usr/bin/env ruby def make_me_a_setter(thename) eval <<-SETTERDONE # <—– Here def #{thename}(myarg) @#{thename} = myarg end SETTERDONE end class Example make_me_a_setter :symboll make_me_a_setter "stringg" def show_symboll puts @symboll end def show_stringg puts @stringg end end example = Example.new example.symboll("ITS A SYMBOL") example.stringg("ITS A STRING") example.show_symboll example.show_stringg

Ruby Assignment语法

一个愚蠢的句法问题: 如果赋值运算符实际上是一个函数,就像 def value=(x) @value = x end 如果左侧操作数和“=”之间没有空格,那么为什么可以将赋值作为test.value = x(带空格),但方法定义不能写为: def value = (x) @value = x end 与空间。 这是解析器所决定的简单语法吗?