Project1

标题: 可以用生成一个Class类的实例的方法来定义一个新类吗? [打印本页]

作者: rt6543ew    时间: 2017-6-15 18:25
标题: 可以用生成一个Class类的实例的方法来定义一个新类吗?
虽然这个问题可能没什么凤凰卵用,但觉得很有趣所以想问问
作者: shitake    时间: 2017-6-15 20:11
本帖最后由 shitake 于 2017-6-15 20:13 编辑

a = Class.new()
a.class_eval do
  def x
    @x
  end
  def initialize(x)
    @x = x
  end
end

aa = a.new(233)
aa.x
# => 233
作者: Mr.Jin    时间: 2017-6-15 22:24
我是这么想的:
类的命名和常量的命名规则是一样的
我认为它们有某种联系
那就是
class 类名 ~ end
这样来定义的类
也许等同于
类名 = Class.new do ~ end
也就是说我觉得 定义一个类 就是生成Class对象 然后类名就是一个常量名 这个常量就是这个Class对象
RUBY 代码复制
  1. KLAZ = Class.new do
  2.     def mtd
  3.         puts 'test'
  4.     end
  5. end
  6. class KLAZ
  7.     def mtd2
  8.         mtd
  9.     end
  10. end
  11.  
  12. KLAZ.new.mtd2 #====> test

作者: guoxiaomi    时间: 2017-6-16 06:26
https://ruby-china.org/topics/7854




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1