如何在 ruby​​ 中从外部访问类变量?

2023-11-24

我正在尝试从类外部的方法访问类变量。

这是我的课:

class Book

  @@bookCount = 0
  @@allBooks = []

  def self.allBooks
    @@allBooks
  end

  def self.bookCount
    @@bookCount
  end

  attr_accessor :name,:author,:date,:genre,:rating

  def initialize(name, author, date, genre, rating)
      @name = name
      @author = author
      @date = date
      @genre = genre
      @rating = rating
      @@bookCount += 1
      @@allBooks << self
  end

end

这是尝试访问类变量@@bookCount的方法

def seeBookShelf
  if @@bookCount == 0
    puts "Your bookshelf is empty."
  else
    puts "You have " + @bookCount + " books in your bookshelf:"
    puts allBooks
  end
end

当我尝试执行该方法时,我得到以下信息:

undefined local variable or method `bookCount' for main:Object (NameError)

如何从外部访问 bookCount?


Use class_variable_get访问类外部的类变量:

class Foo
  @@a = 1
end

Foo.class_variable_get(:@@a)
=> 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ruby​​ 中从外部访问类变量? 的相关文章

  • Gitlab 机架攻击安装

    我正在安装 gitlab 并遵循 Gitlab 安装指南的所有说明 一切正常 但在 初始化数据库并激活高级功能 步骤中 它失败了 https github com gitlabhq gitlabhq blob master doc inst
  • Ruby 中救援的替代方案?

    好像我有begin rescue end我的代码中到处都是语句 这似乎不是正确的做法 谁能建议我如何捕获任何异常而不必将所有内容都放在里面begin rescue end 有什么方法可以让 Ruby 闭嘴并继续前进 即使出现异常也是如此 与
  • 从delayed_job工作线程中排除队列

    在delayed jobs 中 可以为特定队列运行工作线程 我似乎找不到任何有关如何运行工作人员并排除特定队列的示例 文档 我试图让 1 名工作人员处理超高优先级的事情 1 名工作人员处理其余的事情 通过指定哪些队列与哪些工作人员相关来实现
  • 尽管使用“gem install...”命令进行安装,但 mysql2 gem 在捆绑安装时失败

    这是我的日志bundle install Fetching mysql2 0 5 2 Installing mysql2 0 5 2 with native extensions Gem Ext BuildError ERROR Faile
  • 在 Rails 控制器中存储对象的最佳方式(会话除外)?

    我有一个 Rails 控制器 class Controllername lt application def method1 obj API CALL session obj access token redirect to redirec
  • vscode( vscode-ruby + rubocop ) 如何在保存时自动更正?

    环境 vscode 版本1 19 1 1 19 1 鲁博科普 0 52 1 Darwin mbp 16 7 0 Darwin 内核版本 16 7 0 2017 年 10 月 4 日星期三 00 17 00 PDT 根 xnu 3789 71
  • Ruby 中 block 和 &block 的区别

    为什么有时我应该在接受块的函数内使用 block 而有时应该使用 block block只是一个局部变量 block是对传递给该方法的块的引用 def foo block nil p block end foo gt nil foo tes
  • 如何在rails中使用like子句查询?

    我想在搜索关键字时获得 json 格式的数据 所以我使用 LIKE 子句并像这样查询 select from employees where fname like or mname like or lname like or usernam
  • 像 String#replace 一样替换 Ruby 中引用的 Integer 值

    我有以下代码 def mymethod a a replace a end mystring b mymethod mystring p mystring gt a 但我想用 Integer 执行相同的操作 那可能吗 简短的回答 不 长答案
  • Rails Heroku 服务器回形针 Amazon S3 - AWS::S3::Errors::RequestTimeout

    当我使用附加图像保存 konkurrencer 模型时 我在 Heroku 上收到错误 但在本地服务器上却没有 我的 Heroku 日志 36m2012 04 01T17 45 37 00 00 app web 1 0m Started P
  • setInterval() 相当于 ruby

    在 JavaScript 中你可以这样做 setInterval func delay 我似乎无法在谷歌上找到任何我真正想要的东西 红宝石有等效的吗 提前致谢 你可以做类似的事情 Thread new do loop do sleep de
  • 使 diff-lcs 的输出可读

    我正在使用 diff lcs gem 输出两个 html 内容体之间的差异 这是示例内容 版本一 p Paragraph one Sentence one p p Paragraph two Another sentence p p Par
  • 使用rails-Ajax 调用控制器方法?

    我正在尝试从视图中的按钮执行 application controller rb 中的 Ruby 方法 在昨天的一篇文章中 有人告诉我使用 Ajax 调用来执行此操作 因为如果没有它 只会在页面加载时运行 我对此很陌生 很难理解它 我安装了
  • ruby Sequel gem - 如何使用 pg_array 扩展查询数组

    我正在使用pg array http sequel jeremyevans net rdoc plugins files lib sequel extensions pg array rb html扩展和续集版本 4 1 1 我添加了这样的
  • 使用 gem 添加辅助方法

    我找到了很多有关添加表单辅助方法的信息 请参阅我的其他问题之一 但我找不到有关添加辅助方法的任何信息 就好像它们是在application helper rb 我尝试过复制application helper rb从 Rails 应用程序到
  • 将对象数组转换为 ActiveRecord::Relation

    我有一个对象数组 我们称其为Indicator 我想运行 Indicator 类方法 def self subjects该数组上的种类 范围等 我知道在一组对象上运行类方法的唯一方法是让它们成为 ActiveRecord Relation
  • 在 Ruby 中按名称获取一个类?

    有一个包含模块和类名称的字符串 例如 Admin MetaDatasController 我如何获得实际课程 如果没有模块 以下代码将起作用 Kernel const get MetaDatasController 但它与模块中断 ruby
  • 获取类别和子类别的所有产品(rails、awesome_nested_set)

    正在开发一个电子商务应用程序 我试图解决以下问题 我通过 Awesome nested set 插件实现了我的类别 如果我通过选择一个类别列出我的文章 一切正常 但对于某些链接 我想显示一个类别的所有产品及其子类别的产品 这是仅适用于一种类
  • 登录西纳特拉?

    我无法弄清楚如何使用 Sinatra 记录消息 我不想记录请求 而是在我的应用程序中的某些点记录自定义消息 例如 当获取 URL 时 我想记录 Fetching url 这就是我想要的 指定日志级别的能力 例如 logger info Fe
  • 将用户输入转换为整数

    所以我有一个用户可以输入价格的表格 我正在尝试创建一个 before validation 来规范化数据 如果用户放置 则剪裁它 before validation do unless self price blank then self

随机推荐

  • Firebase Unity3D 桌面应用程序 (Mac/PC) - 是否有效?

    Firebase 在此处的文档中 文件 A https firebase google com docs unity setup 它声称它现在适用于桌面版本 因此 您可以统一创建 Mac 应用程序或 Windows 应用程序 它确实可以在
  • 动态单选按钮控制

    代码 private void createRadioButton final RadioButton rb new RadioButton 5 for int i 0 i lt 5 i rb i new RadioButton this
  • 实体框架:单例 ObjectContext - 好、坏还是想太多?

    这个想法是创建一个公开上下文但处理它在 Web 应用程序中的存储的类 目前 这就是我所拥有的 public class EntityContext private static String MAIN CONTEXT KEY MainCon
  • GAE/J 请求日志格式细分

    以下是 GAE 控制台日志记录的示例 https i stack imgur com M2iJX png for readable high res version 我想提供文件的详细信息 显示在折叠 摘要 视图和展开 详细 视图中 我将填
  • 有人成功构建了 Cygwin 版本的 GHC 吗?

    有没有人成功构建了 GHC 的 Cygwin 版本 自从 Haskell 从使用 Cygwin 切换到 MinGW 来自哈斯克尔网站 GHC 的目标是 MinGW 而不是 Cygwin 原则上可以构建一个针对 Cygwin 的 GHC 版本
  • 将 HTML 源代码保存到文件

    如何在 Python 3 中将网站的源代码复制到文本文件中 编辑 为了澄清我的问题 我有以下内容 import urllib request def extractHTML url f open temphtml txt w page ur
  • malloced 数组 VS.malloced 数组可变长度数组[重复]

    这个问题在这里已经有答案了 有两种方法可以为数组分配内存 数组的大小一开始是未知的 最常见的方法是使用malloc像这样 int array when we know the size array malloc size sizeof in
  • 无法从“node_modules/expo/AppEntry.js”解析“../../App”

    我正在用 expo 制作一个 vue 原生应用程序 升级到 expo 版本 33 时 出现以下错误 无法从 node modules expo AppEntry js 解析 App 需要升级到版本 33 是 因为我需要 expo 文件系统模
  • 使用 LLVM 进行源到源编译[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要将 x86 汇编源代码转换为 LLVM 人类可读的 ll 文件 又名 LLVM 汇编语言 我怎样才能做到这一点 如果没有直接的解决方案 是否有
  • 将 json 提交到 MVC3 操作

    我有一个用 Knockout js 创建的表单 当用户按下提交按钮时 我将视图模型转换回模型并尝试提交到服务器 我试过 ko utils postJson location href ko toJSON viewModel 但该对象在到达服
  • 如何在 MySQL 上正确循环存储函数?

    我在正确执行一个非常简单的存储过程时遇到了一些困难 考虑以下文章表片段 id replaced by baseID 1 2 0 2 3 0 3 0 0 一个简单的分层表 使用写时复制 编辑文章时 当前文章的 Replaced by 字段将设
  • 为 Rest 客户端设置 Json 内容类型

    我正在使用用于 Android 的 Loopj 的 AsyncHttpClient 以便我可以与我创建的安静的 Web 应用程序进行交互 我已经使用 Postman 测试了 POST 请求 效果很好 然而 在 Android 中 我很难执行
  • 为什么我的 HashMap 允许重复键?

    嘿 我正在使用HashMap在公告板上跟踪服务和服务请求 但是 我的哈希码和等于错误 因为我得到了重复的键 谁能告诉我为什么会这样吗 keySet的内容 Services 1 1 6 6 3 Requests 8 7 6 5 8 4 5 6
  • 如何重置 CURLOPT_CUSTOMREQUEST

    我正在使用 REST API 除其他外 它使用DELETE像这样的方法 DELETE resources whatever items 123 为了使用 PHP 访问它 我使用 cURL 如下所示 self curl curl init c
  • Hashmap put(),它总是有序的吗?

    当我们将值添加到hashmap
  • 为什么 LINQ JOIN 比 WHERE 链接快得多?

    我最近升级到 VS 2010 并正在使用 LINQ to Dataset 我有一个用于授权的强类型数据集 位于 ASP NET Web 应用程序的 HttpCache 中 所以我想知道检查用户是否有权执行某些操作的最快方法是什么 Here是
  • 列表框“IsSelected”绑定仅部分工作

    我有一个ListBox我通过绑定动态填充 这是在DataTemplate 这就是绑定有些不寻常的原因
  • numpy 数组 C API

    我有一个返回 std vector 的 C 函数 我想在 python 中使用它 所以我使用 C numpy api static PyObject py integrate PyObject self PyObject args std
  • SAS proc导出到CSV:如何添加双引号

    刚接触这个 所以很抱歉 我有一个 SAS 文件 需要将其导出为 CSV 并且需要向所有字段添加双引号 我怎样才能做到这一点 提前致谢 从 SAS 创建 CSV 文件的方法有多种 使用proc export不会将每个字段都用双引号括起来 因此
  • 如何在 ruby​​ 中从外部访问类变量?

    我正在尝试从类外部的方法访问类变量 这是我的课 class Book bookCount 0 allBooks def self allBooks allBooks end def self bookCount bookCount end