请教irb与正式运行ruby时的不同之处?

一, a.rb文件代码如下:
---------------
def say
p "hello"
end
a = 1
a.say
---------------
运行之
a.rb:5: private method `say' called for 1:Fixnum (NoMethodError)
(报错合理,say方法是Object类的私有实例方法)

二, 在irb下运行:
---------------
irb(main):001:0> def say
irb(main):002:1> p "hello"
irb(main):003:1> end
=> nil
irb(main):004:0> a = 1
=> 1
irb(main):005:0> a.say
"hello"
=> nil
---------------
(这里迷惑之,为什么a能调用say方法呢?)

继续运行
irb(main):023:0> puts Object.public_instance_methods.sort
发现say方法竟然在Object公共实例方法里面。

请问有没人能解释一下,irb和正式运行ruby时一些细致的区别
17、Ruby开发中的irb、RDoc及相关工具使用指南 本文详细介绍了Ruby开发中常用工具irb、RDoc、xmp和rtags的使用方法与技巧。涵盖了irb在局部变量识别上的特殊行为及其解决方案,rtags和xmp的功能及操作,以及RDoc在代码文档化中的具体应用。通过流程图、表格和实际代码示例,帮助开发者更高效地进行代码测试与文档编写,提高Ruby开发效率和代码可维护性。 阅读详情

相关推荐

掌握Ruby交互式调试与irb使用技巧

本文深入探讨了Ruby编程语言中的irb交互式工具以及调试Ruby代码的多种方法。通过配置irb提示符以优化工作流程,以及利用Ruby内置的打印方法和调试器来诊断和修复代码问题。

weixin_42592399的博客 415

rails 关联模型_如何使用Rails控制台测试Rails模型,关联和验证

rails 关联模型 介绍和定义 在Microverse远程学校学习如何构建Rails应用程序时,很多时候我和我的编码伙伴都需要测试我们的Rails关联方法是否有效。 我们必须学习如何使用rails控制台进行测试,因为它比运行浏览器或在单独的文件上创建测试要快。 Rails控制台是内置在rails环境中的irb会话,可通过在终端中键入rails c进行访问。 构建Rails应用程序时,可...

编程故事的地方 354

Ruby-irbtools改善Ruby的IRB控制台

irbtools - 改善Ruby的IRB控制台

ruby环境中的irb

值得注意的是,在 `%q` 中,由于字符串都是使用单引号括起来的,因此不用对单引号进行转义。而在 `%w` 和 `%i` 中,由于使用空格分隔元素,因此如果需要在元素中包含空格,就需要使用引号将元素括起来。# %Q{} 则是表示双引号字符串(Double-Quoted String)的另一种形式,与双引号字符串的另一种不同之处在于,不需要使用引号将字符串括起来。# %i{} 与 %w{} 类似,也是用来快速生成一个数组,不过 `%i{}` 生成的是 Symbol 数组(Array of Symbols)。

Toml_的博客 1172

RocketMQ 为什么要自己做一个 NameServer ?RocketMQ 5.x 版本中的 proxy、controller 和 container 分别有什么用 ?

1.独立运行的分散结构 2.简化实现,容忍部分数据不一致 Proxy:多语言支持、简化开发 Controller: 提高 Broker 的性能 Container:提高资源利用率,平衡负载

xaiobit_hl的博客 1489

深入剖析:NAND Flash与SD NAND(贴片式SD卡)存储扇区分配表架构差异与优化策略

本文深入探讨了NAND Flash与SD NAND(贴片式SD卡)在存储技术中的架构差异及其优化策略。NAND Flash作为非易失性存储器,依赖主控芯片进行坏块管理和磨损均衡,而SD NAND则通过内置控制器和标准文件系统(如FAT)简化了存储管理。两者在写入性能、容量扩展和可靠性方面各有优劣,NAND Flash需通过磨损均衡和写入合并优化性能,而SD NAND则通过高容量和高速传输提升效率。文章为嵌入式系统开发者和硬件工程师提供了关于如何根据需求选择并优化存储介质的参考。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1238

三步装到最新 macOS:OpenCore Legacy Patcher 免费复活老 Mac 的完整流程

一台 2012 年的 iMac 还能跑 macOS Tahoe 吗?能。OpenCore Legacy Patcher(下文简称 OCLP)就是干这个的免费开源工具:它为老 Intel Mac 自动生成 OpenCore 引导配置,再叠加根补丁,让 2008 年前后的机型装到最新系统。当前版本 3.0.0,基于 OpenCore 1.0.5 和 Lilu 1.7.2。下面从原理讲到点哪个按钮,一次

gitblog_00635的博客 844

Windows 10下Gpg4win 4.3.1安装与配置全攻略:从下载到邮件加密实战

本文详细介绍了在Windows 10系统下安装和配置Gpg4win 4.3.1的全过程,包括下载、验证、自定义安装以及密钥管理。特别重点讲解了如何通过Kleopatra证书管理器进行密钥创建和管理,以及在Outlook中实现邮件加密的实战操作,帮助用户全面提升数据安全防护能力。

weixin_29271263的博客 301

介绍一些编程语言— Ruby语言

Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在 20 20 20 世纪 90 90 90 年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守 GPL 协议和 Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。由 Ruby 语言本身还发展出了JRuby、IronRuby 等其他平台的 Ruby 语言替代品。

ZH_qaq的博客 648

【DRAM存储器七】SDRAM介绍-芯片引脚与功能框图详解

详解初代SDRAM芯片引脚定义与芯片功能框图中的各个模块

highman110的博客 2205

【基于Arduino 的CNC笔式绘图仪】

该机器的结构基于我之前视频中的DIY CNC激光雕刻机,目标是以尽可能少的零件制造最简单的CNC机器。它使用 3 个 NEMA 17 步进电机进行 X、Y 和 Z 轴运动,并使用一个小伺服器进行夹持器。这款数控笔式绘图仪的大脑是一块Arduino UNO板,结合了一个数控屏蔽和三个A4988步进驱动器。在我看来,相当大的工作区域,360x280mm,以及这款笔式绘图仪可以输出的细节水平也令人印象深刻。我真的很惊讶这些图纸的好坏和精确程度,尤其是我使用0.6毫米中性笔的图纸。

vor234的博客 1498

安装ruby 2.2.3_Ruby 2.7改进了垃圾收集,模式匹配

安装ruby 2.2.3 Ruby 2.7是Ruby编程语言的最新升级,现已作为生产版本正式提供。 新版本对垃圾收集,模式匹配和REPL(read-eval-print-loop)进行了改进。 Ruby 2.7中的新功能是压缩垃圾收集,该垃圾收集用于对碎片化的内存空间进行碎片整理。 GC.compact方法压缩堆中的对象,以便使用更少的页面。 Ruby开发团队的成员解释说,某些多线程Ruby...

cxu0262的博客 208

【嵌入式】AMIC和DMIC(什么是数字麦和模拟麦)

最近在做一个关于MIC的项目,同事不太清楚AMIC和DMIC的区别,又有高手详细解释了其原理,在此整理记录一下,方便后续查阅。

Bigan(安)的博客 8549

Ubuntu 22.04下用rbenv管理Ruby版本的必要性与实操指南

Ruby 是 Rails 应用运行的基础解释器,其版本兼容性直接决定开发环境是否稳定可用;rbenv 作为轻量级 Ruby 版本管理工具,通过 PATH 劫持与目录隔离机制,实现多版本共存、项目级精准切换和无副作用卸载;相比系统包管理器 apt 安装的过时 Ruby(如 Ubuntu 22.04 自带的 2.7.4),rbenv 支持手动编译最新稳定版(如 Ruby 3.1.4),确保 OpenSSL、zlib、readline 等关键依赖正确链接,从而解决 gem native extension 编译失

weixin_34127717的博客 453

手把手教你学simulink(16.2)--基于Simulink的高通滤波器(High-Pass Filter)项目

基于Simulink的高通滤波器(High-Pass Filter)项目的详细实例介绍。这个项目将重点放在高通滤波器的设计、实现和仿真上,帮助你理解和应用高通滤波器在信号处理中的作用。

MHD0815的博客 926

UG NX二次开发(C++)-UIStyler-指定平面的对象和参数获取

在采用NXOpen C++进行二次开发时,采用Menu/UIStyler是一种很常见的方式,这样可以制作精美的界面,而且常用的块对象也集成了快速编程的代码,我们可以快速的利用这些块来定制我们需要的界面。但是,对于很多初学者可能对选择对象的获取不是很熟悉,我们本文以选择“指定平面”来讲一下如何获取选择的对象和对象的参数。另外,由于我们的UG NX二次开发学习讨论群QQ一群已满,有希望参与学习的有志之士加入我们的QQ二群:683566590。

GimiGimmy 1091

Ruby 2.7改进了垃圾收集,模式匹配

Ruby 2.7是Ruby编程语言的最新升级,现已作为生产版本正式提供。 新版本对垃圾收集,模式匹配和REPL(read-eval-print-loop)进行了改进。 Ruby 2.7中的新功能是压缩垃圾收集,该垃圾收集用于对碎片化的内存空间进行碎片整理。 GC.compact方法压缩堆中的对象,以便使用更少的页面。 Ruby开发团队的成员解释说,某些多线程Ruby程序可能会导致内存碎片,...

cxu0262的博客 202

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

agents-from-scratch 第11课:Evals 回归测试实战:黄金数据集防止Prompt回归的可靠方案

agents-from-scratch 是一款基于本地 LLM 从零构建 AI Agent 的开源教程项目,第 11 课教你用 **Evals 回归测试** 守护 Agent 质量:通过**黄金数据集(Golden Datasets)** 在每次修改 Prompt 后自动验证结构化输出、工具调用与记忆存取是否"悄悄变坏",是防止 Prompt 回归的可靠方案。 ## 🤔 为什么改一行 Prom

gitblog_00386的博客 395

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

全志T113-i嵌入式Linux快速启动优化:从8.65秒到2.4秒

嵌入式设备启动时间直接影响产线效率和用户体验,从黑屏到界面可用的时间已成为验收硬指标。Linux系统启动链路涉及SPL、U-Boot、内核和用户空间等多个阶段,每个阶段都有可优化的时间开销。通过裁剪U-Boot配置、采用initramfs、精简内核驱动、调整Qt运行时参数或改用LVGL渲染,可以系统性地缩短启动耗时。本文基于全志T113-i双核Cortex-A7平台的实践,完整记录了HMI设备从默认8.65秒压缩至2.5秒以内的全过程,涵盖时间账单拆解、关键配置项、踩坑记录和最终实测数据,为同类Cortex

weixin_33875839的博客 343

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Ruby_01_环境安装

手册简介:Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。由 Ruby 语言本身还发展出了JRuby(Java平台)、IronRuby(.NET平台)等其他平台的 Rub...

pre_eminent的JAVA学习园地 587

今日正式安装ruby+rails+nb6

添加源sudo gedit/etc/apt/sources.list 插入:deb [url]http://us.archive.ubuntu.com/ubuntu[/url] dapper universe deb-src [url]http://us.archive.ubuntu.com/ubuntu[/url] dapper univers...

weixin_34268579的博客 130

Ruby

Ruby是一门面向对象的脚本语言,可用于开发网页和后台,应用面十分广泛。作者是日本人,95年正式发布。 官网: https://www.ruby-lang.org/zh_cn/ 竞争对手: Java PHP Node.js cmd输入irb进入Ruby命令行 第一个hello world程序 puts "我是Ruby,Hello World" ...

hxxjxw的博客 339

Ruby应用打包为Gem的核心原理与工程实践

Gem是Ruby语言原生支持的标准化分发单元,其本质是一套融合依赖声明、路径注入与可执行注册的运行时契约。基于RubyGems内置机制,gem通过.gemspec元数据定义lib加载路径、bin命令绑定及版本约束,使require自动解析和gem install一键生效成为可能。相比ZIP手动管理或Docker系统级封装,Gem专精于解决Ruby生态内的依赖复现与跨环境一致性问题,尤其适用于CLI工具、内部SDK及团队共享库等场景。本文聚焦真实Ruby Applications如何遵循规范构建可安装、可执行

weixin_30765577的博客 374

2010年InfoQ中文站Ruby社区回顾

2010年刚刚过去,感谢大家在过去一年里对InfoQ中文站的关心与支持。在踏上新的征程前,让我们先来回顾一下去年一年中InfoQ中文站Ruby社区里都有哪些内容,大家又在关注什么。Ruby VM相关内容\u0026#xD;\n2010年里,Ruby正式进入1.9时代,年底时新旧MRI都发布了补丁版本,1.9.2 with p136更是1.9.2后的首个重要更新,InfoQ一直在跟踪报道Ruby V...

啊啊啊啊2 271

在 ruby 中使用 sqlite3 数据库

今天尝试在 ruby 中使用 sqlite3 数据库。Sqlite3 是一个开源免费的数据库系统,原文件只有大概 7W 行代码,可以以单文件方式使用。Sqlite3 是 Sqlite 的第三个正式版本,为了突出这个版本的重要性与突出性,sqlite 中原来的以 sqlite 开头功能函数等也都改版为以 Sqlite3 开头,如以前在 ruby 中使用的创建数据库语句 db = ...

weixin_30512043的博客 511
上一篇: java学习
下一篇: How the Dalvik Virtual Machine Works on Google Android
baiming
博客等级 码龄25年 0粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值