Tag: 语法

undef – 你为什么要在ruby中取消定义一个方法?

在任何其他编程语言中,我从未见过undef – 或任何其他允许你取消定义方法的东西。 为什么Ruby需要它? 编辑:我不是在争论这个有什么问题。 我只是不明白在运行时定义方法的目的? 那是什么意思? 怎么用? 我从来没有用C或Java做过这个。

<< – CONSTANT做什么?

return <<-HTML Link-Title HTML 什么是<< – 第一行的HTML和最后一行的HTML?

如何在正则表达式中使用双括号?

双方括号在正则表达式中意味着什么? 我对以下示例感到困惑: /[[^abc]]/ /[^abc]/ 我正在使用Rubular进行测试,但我发现双支架和单支架之间没有任何区别。

双splat运算符破坏性地修改哈希 – 这是一个Ruby错误吗?

我注意到我发现Ruby 2.1.1中的** (双splat)运算符是一个非常令人惊讶的行为。 在**hash之前使用键值对时,哈希保持不变; 但是,当键值对仅在**hash之后使用时,哈希值将被永久修改。 h = { b: 2 } { a: 1, **h } # => { a: 1, b: 2 } h # => { b: 2 } { a: 1, **h, c: 3 } # => { a: 1, b: 2, c: 3 } h # => { b: 2 } […]

在以下ruby语法中,`&`是什么意思?

在下面的ruby示例中, &表示什么? 它是否在循环中沿+=线? payments.sum(&:price) 谢谢, 丰富

使用ruby splat运算符在哪里合法?

Splats很酷。 它们不只是用于爆炸arrays,尽管这很有趣。 它们还可以转换为数组并压平数组(请参阅http://github.com/mischa/splat/tree/master以获取他们所做的详尽列表。) 看起来无法对splat执行额外的操作,但在1.8.6 / 1.9中,以下代码抛出“意外的tSTAR”: foo = bar || *zap #=> unexpected tSTAR 虽然这有效: foo = *zap || bar #=> works, but of limited value splat在表达式中出现在哪里?

Ruby 1.9中新哈希语法有什么好处?

除了使用符号作为键来定义哈希更简洁之外,编写哈希还有其他好处: {key1: “value1”, key2: “value2”}而不是{:key1 => “value1”, :key2 => “value2”} ? 此外,当您将字符串和符号混合为散列键时,常规是什么? 你把它写成{“key1” => “value1”, key2: “value2”}或者将样式保持为{“key1” => “value1”, :key => “value2”}

map(&:name)在Ruby中意味着什么?

我在RailsCast中找到了这段代码: def tag_names @tag_names || tags.map(&:name).join(‘ ‘) end map(&:name)是什么意思?

什么::(双冒号)在Ruby中意味着什么?

什么在Ruby中意味着什么? 例如Foo::Bar 。

在Ruby 1.8中支持Ruby 1.9的哈希语法

我正在使用{key: ‘value’}语法为我的代码中的哈希编写一个Ruby gem。 我的测试全部通过1.9.x,但我(可以理解)在1.8.7中得到syntax error, unexpected ‘:’, expecting ‘)’ 。 是否有支持1.8.x的最佳实践? 我是否需要使用我们的老朋友重写代码=> ,还是有更好的策略?