惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
A
About on SuperTechFans
量子位
Engineering at Meta
Engineering at Meta
B
Blog
The Cloudflare Blog
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
Y
Y Combinator Blog
J
Java Code Geeks
D
DataBreaches.Net
aimingoo的专栏
aimingoo的专栏
T
Tailwind CSS Blog
H
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
酷 壳 – CoolShell
酷 壳 – CoolShell

Ruby

一個用 DIDComm 實現服務器間通信的 Rails demo RubyConf China 2024 参会报告 - Day 1 有对 Ruby 感兴趣的吗? MRuby Devkit 一个简单的脚手架,帮助你像 Go 一样把 Ruby 编译成可执行二进制文件 使用 Ruby-build 在 MacOS 上 编译 Portable Ruby [翻译] Async Ruby(异步 Ruby) [翻译] Ruby Fiber Scheduler Ruby 3.2.0 发布 Ruby on Mac 用 100 行 Ruby 代码模拟 JavaScript 的 Eventloop 管窥蠡测从思考游戏到实现 2048 用 Ruby 讲从创业到 996 公司的故事(戏说 master-worker 模式) Sinatra 源码分析 (一):set 系统工作原理 《Ruby 设计模式》笔记 Ruby 标准库有趣部分摘要 并行并发进程线程协程 GIL 概念简明解释笔记(Ruby 举例) Sinatra 的 app 模板,提供一些胶水代码支持类似 Rails 的体验 Ruby 的方法查找再往前一步 有在深圳至简天成的吗? 求加微信 Ruby 3.0.0 Released 新建了个 ruby 中文讨论群 Language Hopping, Ruby 为什么不火,一点瞎想 ruby,一代优秀语言就这样陨落了吗? ruby 的 "a" 和 :a 能转换吗 求大佬帮安装一个 mastodon,有偿! notepad++ ssh 一些个小坑 有什么好的方法/IDE 阅读 Gem 库的源码? 问一个 ruby 的问题 用 discourse 搭了个论坛 求测试 找小伙伴一起开发和完善一个 Ruby 增量代码覆盖率统计工具
Ruby 中 Singleton 方法的另一种理解方式
rockllei · 2016-10-19 · via Ruby

Ruby 中的 Singleton 方法是 Ruby 中一个重要的知识点,也是做 Ruby 元编程的一个重要技巧。 简单的说就是在 Ruby 中任何自定义类都是 Class 这个类的一个实例,所以 Singleton 方法其实就是一个实例所拥有的方法,比如:

a = "hi"

def a.you
  "hi,  you"
end

a.you # => hi, you

"hello".you # => undefined method 'you'

上面的 a.you 方法就是 a 这个字符串实例的 Singleton Method 。

同样如果拿我们最熟悉的类举例子的话就是:

class A
  def self.hi
    'hi A'
  end
end

A.hi # => hi A

上面的定义方法所有的同学应该都知道,其实就是类方法的定义,在 Ruby 中类方法其实就是类的 Singleton Method ,就像上面说的因为 A 也是 Class 这个类的一个实例(通过 A.class 就可以知道),所以,其实上面的方法也可以这样定义:

class A
end

def A.hi
  'hi A'
end

A.hi # => hi A

这样的话,就和上面字符串 a 的效果一样,就更容理解了。 所以关键是理解我们所定义的类也是 Class 这个类的一个实例,这是关键。


其实我想说的,下面才是关键,

蛋人网 http://eggman.tv 的最新系列大课程<Ruby 元编程="">已经开坑了,从今天开始会陆续更新,第一节视频课件<Ruby 元编程的介绍和使用场景="">已经放出,免费的, http://eggman.tv/c/s-ruby-meta-programming ,计划每周更新两期,上面讲述的是课件一部分内容,我们计划会在整个课件中为大家讲述:

  • Ruby 基础类结构
  • Module Mixin 设计模式
  • instance_eval 和 class_eval 的使用,以及*_eval 类和*_exec 类的区别
  • Singleton 方法的原理和各种使用场景
  • ActiveSuppot::Concern 的实现原理
  • define_method & method_missing
  • Block 的进阶使用

等等众多深入内容的讲解,当然还包括众多的实例演示和如何使用这些高级技巧,欢迎各位大哥大嫂前来支持。