在完成了Hartl的Rails教程的前4章之后,完成了Ruby的学习。我被困在about_constants.rb的开头
考恩的目的是展示常数的层次结构。显然,我在这里遗漏了一些简单的东西(这是我第一次学习编程),但我似乎找不出自己的错误所在。任何洞察力都是非常感谢的,谢谢!
下面是我一直在尝试的代码:
Macintosh:~ rails$ irb
2.0.0p247 :001 > C = "top level"
=> "top level"
2.0.0p247 :002 > class AboutConstants
2.0.0p247 :003?> C = "nested"
2.0.0p247 :004?> end
=> "nested"
2.0.0p247 :005 > C
=> "top level" # WRONG - correct response should be "nested"
2.0.0p247 :006 > ::C
=> "top level" # CORRECT请参考我正在研究的about_constants.rb的顶部:
require File.expand_path(File.dirname(__FILE__) + '/neo')
C = "top level"
class AboutConstants < Neo::Koan
C = "nested"
def test_nested_constants_may_also_be_referenced_with_relative_paths
assert_equal __, C
end
def test_top_level_constants_are_referenced_by_double_colons
assert_equal __, ::C
end
def test_nested_constants_are_referenced_by_their_complete_path
assert_equal __, AboutConstants::C
assert_equal __, ::AboutConstants::C
end发布于 2022-10-19 17:27:03
您正在从与koans练习不同的上下文中调用irb控制台中的常量。
你的尝试:
C从类AboutConstants中调用。因此,您正在调用的路径是引用与调用相同的上下文/级别的常量,它意味着:退出类,因此当您调用C时,解释器将首先找到值为“顶级”的外部常量C。::C时,解释器将找不到外部级别,因此它将返回“顶级”的相同值。考恩运动:
C。因此,解释器将在“嵌套”的相同上下文/级别中找到常量。::C时,解释器将尝试在下一个级别找到常量C,以便找到值为“顶层”的外部常量。https://stackoverflow.com/questions/19373019
复制相似问题