。 vs ::(点与双冒号)用于调用方法[重复]

2024-07-04

我正在学习 Ruby令人心酸的 Ruby 指南 http://www.rubyinside.com/media/poignant-guide.pdf在一些代码示例中,我遇到了双冒号和点的使用,它们似乎用于相同的目的:

File::open( 'idea-' + idea_name + '.txt', 'w' ) do |f|
   f << idea
end

在上面的代码中,双冒号用于访问open的方法File班级。然而,我后来遇到了使用点来达到相同目的的代码:

require 'wordlist'
# Print each idea out with the words fixed
Dir['idea-*.txt'].each do |file_name|
   idea = File.read( file_name )
   code_words.each do |real, code| 
     idea.gsub!( code, real )
   end
puts idea
end 

这次,一个点被用来访问read的方法File班级。有什么区别:

File.read()

and

File::open()

这是范围解析运算符 http://en.wikipedia.org/wiki/Scope_resolution_operator#Ruby.

维基百科的一个例子:

module Example
  Version = 1.0

  class << self # We are accessing the module's singleton class
    def hello(who = "world")
       "Hello #{who}"
    end
  end
end #/Example

Example::hello # => "Hello world"
Example.hello "hacker" # => "Hello hacker"

Example::Version # => 1.0
Example.Version # NoMethodError

# This illustrates the difference between the message (.) operator and the scope
# operator in Ruby (::).
# We can use both ::hello and .hello, because hello is a part of Example's scope
# and because Example responds to the message hello.
#
# We can't do the same with ::Version and .Version, because Version is within the
# scope of Example, but Example can't respond to the message Version, since there
# is no method to respond with.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

。 vs ::(点与双冒号)用于调用方法[重复] 的相关文章

随机推荐

  • 为什么自动装配在线程中不起作用?

    我在Spring 3 0中做了一个maven项目 我做了一些DAO 服务和控制器 在我的一个控制器中我调用了一个服务 在其中启动了一个线程 问题是在线程中我声明了一个 服务 变量 应该使用 Autowired 注释进行初始化 但它不起作用
  • QT 正则表达式检索数字

    我必须拆分 number number number 形式的简单 QString 例如 2323 432 1223 我使用的代码是 QString line QRegularExpression re d QRegularExpressio
  • dotnet sdk 已安装但无法识别 - Linux Ubuntu/popOS 22.04

    昨天我的 dotnet sdk 工作得很好 今天当我登录到我的电脑时 我更新了系统和 VSCode 然后当我尝试运行时dotnet watch run 我收到此错误 You intended to execute a NET applica
  • 如何忽略`git stash -p`中添加的帅哥

    想象一下这个场景 edit two files git add p add hunks from one file 现在当你跑步时git stash p 它会再次询问您是否要隐藏您刚刚通过选择的帅哥git add p 有没有办法配置 git
  • 如何使用 Ruby 的新 lambda 语法?

    Ruby 有 lambda 语法 所以我可以使用 gt symbol a 0 new gt a lt 5 do puts a a 1 end 这非常有效 但是当我尝试这样做时 match to gt e 404 Hello I am mic
  • i识别人的扫描图像中的眼睛

    我想开发一个 iPhone 应用程序 它应该识别 QR 阅读器扫描的图像中人的眼睛 脸部和肤色 如何在图像中检测眼睛 虽然这可能是可能的 但我只是警告您 无论编程如何 它都会有一定程度的不准确性 任何面部 视网膜检测软件都可能被欺骗 并且考
  • .NET进程监视器

    有没有办法确定特定机器上次运行进程的时间 我可以使用以下内容来确定进程是否正在运行 但如果该进程已停止 则应用程序无法获取该进程 Process process Process GetProcessesByName processName
  • OpenSSL 二进制发行版:版本末尾字符的含义

    我正在使用依赖于 OpenSSL 的 libcurl 因此我也需要与其链接 有适用于 Windows 的二进制发行版here http slproweb com products Win32OpenSSL html 但我不明白版本末尾的字符
  • Android 在 FragmentPagerAdapter 中的 Fragment 中设置 TextView 的文本

    这让我发疯 基本上 我想创建一个ViewPager并添加一些Fragment到它 然后 我想做的就是在其中之一设置一个值Fragment s TextViews 我可以添加Fragment很好 它们连接在一起 但是当我去findViewBy
  • 我们如何被允许使用前向声明的对象或函数,又如何不可以?

    如果我们声明一个对象或函数而不定义它 那么我们如何在声明之前使用它以及如何不允许在声明之前使用它 对于在定义之前使用转发声明的结构标记的类似问题 基本上我们如何允许使用不完整类型 请参阅https stackoverflow com a 4
  • 获取索引处字符的 ANSI 颜色

    我已经开发了couleursNPM包 https github com IonicaBizau couleurs可以设置追加rgb方法String prototype gt console log Hello World rgb 255 0
  • 什么时候不再支持IE6? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 众所周知 支持 IE6 及其许多有据可查的怪癖是痛苦的 但这是开发和支持基于 Web 的技术的必要部分 我的问题是 有谁知道 IE6 计划何时结束 M
  • 拟合高斯函数

    我有一个直方图 见下文 我试图找到平均值和标准差以及适合我的直方图的曲线的代码 我认为 SciPy 或 matplotlib 中有一些可以提供帮助的东西 但我尝试过的每个示例都不起作用 import matplotlib pyplot as
  • CMake 在调试和发布中仅链接到目标的发布配置

    当包含目标时 是否有另一种方法仅链接目标的发行库target link libraries对于发布和调试配置 I know target link libraries有选项optimize and debug可以这样做 target lin
  • 按类别(术语)过滤 WooCommerce $order 商品

    在这个问题中 我拥有所有的部分 但我似乎无法将它们组合在一起 我有一个 WooCommerce 订单的打印模板 它以正常方式列出产品 它们存储在数组中的顺序 这又是它们放置在购物篮中的顺序等 但是 我们希望它们按类别 术语 分组 所以这意味
  • 使用 SimpleCursorAdapter 更改 Cursor 的值

    我有包含列 名称 时间 UTC 格式 纬度 经度 的数据库表 我使用 ListActivity 和 SimpleCursorAdapter 显示该表 我希望 时间 列以人类可读的格式 2010 年 7 月 13 日 10 40 而不是 UT
  • UpdatePanel 内 FormView 中的 FileUpload

    场景 我有一个 ASP Net 网页 我打算用它来让用户 不是真正的用户 而是基本上的内容管理员 使用 FormView 插入和编辑表中的记录 该 FormView 位于 UpdatePanel 内部 因为我还使用级联下拉列表来让用户选择一
  • MeanBean EqualsMethodTester 和 HashCodeMethodTester 的自定义属性工厂

    是否可以配置自定义工厂来生成值EqualsMethodTester and HashCodeMethodTester课程来自org meanbean test 当我通过适用于的配置时BeanTester to EqualsMethodTes
  • GCP 将自定义域指向特定的 App Engine 服务

    我目前有一个包含四项服务的 Google App Engine 灵活项目 当我使用文档将自定义域映射到我的项目时https cloud google com appengine docs standard python mapping cu
  • 。 vs ::(点与双冒号)用于调用方法[重复]

    这个问题在这里已经有答案了 我正在学习 Ruby令人心酸的 Ruby 指南 http www rubyinside com media poignant guide pdf在一些代码示例中 我遇到了双冒号和点的使用 它们似乎用于相同的目的