问题描述
class 的问题 (不好意思,我的理解能力很差)
instance method, variable class method, variable我已经阅读其他ruby书籍,还是不懂它区别在哪。一样是方法和变量,这2个的差别或用意在那里?
还有最后一个问题是selfself是什么?
希望各位大大,能帮我解决这些问题,希望能举几个简单简明的例子^^谢谢^^
问题解答
回答1:我试着贴个代码解释下吧,lz如果不懂就到评论里追问我吧。
#!/usr/bin/env ruby# encoding: UTF-8class Trivia @@x = 10 def instance_scope_x @x end def instance_scope_x=(x) @x = x end def self.class_scope_x @@x end def self.class_scope_x=(x) @@x = x endenda = Trivia.new# 只有Trivia对象才能使用class方法。所以这里用a.class返回Trivia对象p 'The class scope x in a : #{a.class.class_scope_x}'a.instance_scope_x = 20p 'The instance scope x in a : #{a.instance_scope_x}'b = Trivia.new# Trivia的实例修改自身的值,不会影响同个类的其他实例p 'The instance scope x in b : #{b.instance_scope_x}'p 'The class scope x in b : #{b.class.class_scope_x}'b.class.class_scope_x = 30# 修改了Trivia类的值。因为a和b共享同一个类对象(都指向Trivia),所以现在值改变了p 'Now the class scope x in a : #{a.class.class_scope_x}'# self指向当前作用域的所有者class Trivia # 类作用域 p self def self_scope_x # 实例作用域 p self # 这里self指向实例作用域 self.instance_scope_x end def self.self_scope_x # 这里self指向类作用域 self.class_scope_x endendp 'The self_scope_x in Trivia: #{Trivia.self_scope_x}' # 调用的是class_scope_xp 'The self_scope_x in Trivia’s instance: #{a.self_scope_x}' # 调用的是instance_scope_x回答2:
我会在文章里讲解这些问题,欢迎关注