除了惯例之外,是否有任何理由在ruby块或方法中使用或不使用局部常量?
例如:
get '/documents/:id' do
Doc_id = params[:id]
...
...
end
与
get '/documents/:id' do
doc_id = params[:id]
...
...
end
在一个块中它似乎有效,但在一种方法中你会收到一个错误:
def foo(bar)
Foo = bar
puts Foo.inspect
end
=> SyntaxError: (irb):11: dynamic constant assignment
答案 0 :(得分:-1)
问题是在方法的情况下,你实际上会在每次调用方法时改变常量。您只能初始化一种常量。这也适用于块。看到这里:
m = [1, 2]
m.each do |t|
DOC_id = 123
DOC_id = 12
end
然后您将收到以下错误:
(irb):12: warning: already initialized constant DOC_id
(irb):11: warning: already initialized constant DOC_id
(irb):12: warning: already initialized constant DOC_id
证明你不能重新分配常量,即使是在块中。