首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >@name =在父类中设置attr_accessor时,值和名称为空

@name =在父类中设置attr_accessor时,值和名称为空
EN

Stack Overflow用户
提问于 2011-09-01 10:29:05
回答 1查看 422关注 0票数 1

在#ruby之前,有人告诉我,我不需要使用@name和self.name,除非变量名已经在本地定义,我很高兴地了解到这会让我的代码更整洁一些。在尝试并调整了一些类之后,我注意到在子类的initialize中设置了@name之后,我不能访问name (它是nil)。

以下是工作原理:

代码语言:javascript
复制
module EnvyGeeks
  class Attributes

    attr_accessor :persons_name

    def initialize(name)
      @persons_name = name
    end

  end
end

module EnvyGeeks
  class MyAttributes < Attributes

    def initialize(name)
      @persons_name = name
      puts persons_name
    end

  end
end

envygeeks = EnvyGeeks::MyAttributes.new("Jordon")

以下操作失败:

代码语言:javascript
复制
require "pp"

module Jekyll
  class MyPages < Page

    def initialize(site, base, page)
      @name = page.split("/")
      pp name # => nil
    end

  end
end

这个类完成了这个超级类:

https://github.com/mojombo/jekyll/blob/master/lib/jekyll/page.rb

我有点困惑,为什么name在这个实例中不起作用,而在第一个实例中起作用?

更多信息:

代码语言:javascript
复制
From: ./pages.rb @ line 19 in Jekyll::MyPages#initialize:

    14:     def initialize(site, base, page)
    15:       @site = site
    16:       @dir  = "/"
    17:       @base = base
    18:       
 => 19:       binding.pry
    20:       @name = page.split("/")
    21:       if name.length > 1
    22:         name.pop if name.last =~ /index.html$/
    23:         name = name.join("/") if name.length > 1


pry(#<Jekyll:Page @name=nil>)> @name = page.split("/") => ["index.html"]
pry(#<Jekyll:Page @name=["index.html"]>)> name => nil
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-01 11:17:10

这是哪个版本的Ruby?在1.9.2上它工作得很好。

代码语言:javascript
复制
require 'jekyll'
require 'pp'

module Jekyll

  class TestPage < Page
    def initialize(site,base,page)
      @name = "test"
      puts name # => test
      pp name # => "test"
    end
  end

end

a = Jekyll::TestPage.new("","","")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7265557

复制
相关文章

相似问题

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