这很难搜索,但我在类方法中有一行 Ruby,其中首先通过为变量分配一个裸 new
来声明变量。关键字,我不确定这里发生了什么:
def self.html_render_controller(post)
controller = new
controller.action = 'show'
controller.post = post
controller.render_to_string
end
来自其他语言,在我看来就像 controller
被隐式初始化为某种对象。和 render_to_string
是内置的 Rails,所以我最好的猜测是 controller
被初始化为某种 Rails 对象?我想我的问题真的是
controller
的值是多少?在第一个任务之后?或者什么样的执行规则甚至只是 Ruby 中的文档会为我指明正确的方向来理解这种速记?
最佳答案
它不像 ruby 代码那么奇怪。这是相当直接的。new
不是关键字是对隐式调用的方法 self
.
在 Ruby 中调用方法不需要括号。
如果你在 Ruby 中调用一个没有显式接收器的方法,接收器将是 self
, 在方法体内部 self.html_render_controller
, self
引用定义方法的类。
所以执行 new
方法内部self.html_render_controller
只需返回定义方法的类的新对象。
您可以在 new
上获得更多详细信息来自 documentation on Class
,即 Ruby 中任何类的类,作为类只是类 Class
的对象.
关于ruby-on-rails - Ruby 变量仅分配给关键字 "new",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63692492/