gpt4 book ai didi

ruby-on-rails - 关于 Ruby 的一般问题

转载 作者:数据小太阳 更新时间:2023-10-29 07:11:54 25 4
gpt4 key购买 nike

我在我的 rails 应用程序中安装了来自 github.com 的 acts_as_versioned 插件,但有一段代码我不完全理解,我希望有人能帮我解决这个问题

class_eval <<-CLASS_METHODS
def a_bunch_of_stuff
....
end
CLASS_METHODS

我知道 block 内的方法(或任何它是什么)被定义为类内的实例方法,但我在插件的任何地方都找不到定义为常量的 CLASS_METHODS,而且我也不确定是什么<<- 在 class_eval 之后。该插件位于 here ,并且有问题的代码从 lib/acts_as_versioned.rb 的第 199 行开始。如果有人愿意告诉我这里的内幕,我将不胜感激。

谢谢

-C

最佳答案

这是一个异端。 http://en.wikipedia.org/wiki/Heredoc#Ruby

匹配的 CLASS_METHODS 标记本质上是开始和结束引号。如果您使用 <<- 而不是 <<,结束标记可以用空格缩进。

你可以在 Ruby 中一次使用多个 heredocs(我让我的 heredocs 与参数名称相同,但这只是为了美观 - 它没有区别):

def define_with_description description, code
puts "defining a method to #{description}"
class_eval code
end

define_with_description <<-DESCRIPTION, <<-CODE
set up us the bomb
DESCRIPTION
Bomb.new.set_up(us)
CODE

关于ruby-on-rails - 关于 Ruby 的一般问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/604895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com