首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >红宝石树about_constants.rb

红宝石树about_constants.rb
EN

Stack Overflow用户
提问于 2013-10-15 03:51:56
回答 1查看 282关注 0票数 0

在完成了Hartl的Rails教程的前4章之后,完成了Ruby的学习。我被困在about_constants.rb的开头

考恩的目的是展示常数的层次结构。显然,我在这里遗漏了一些简单的东西(这是我第一次学习编程),但我似乎找不出自己的错误所在。任何洞察力都是非常感谢的,谢谢!

下面是我一直在尝试的代码:

代码语言:javascript
复制
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的顶部:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2022-10-19 17:27:03

您正在从与koans练习不同的上下文中调用irb控制台中的常量。

你的尝试:

  1. 在关闭类定义之后,将常量C从类AboutConstants中调用。因此,您正在调用的路径是引用与调用相同的上下文/级别的常量,它意味着:退出类,因此当您调用C时,解释器将首先找到值为“顶级”的外部常量C

  1. 当您调用::C时,解释器将找不到外部级别,因此它将返回“顶级”的相同值。

考恩运动:

  1. 它在类定义结束之前从类定义调用常量C。因此,解释器将在“嵌套”的相同上下文/级别中找到常量。

  1. 现在,当调用::C时,解释器将尝试在下一个级别找到常量C,以便找到值为“顶层”的外部常量。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19373019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档