在Ruby中的类声明中将值传递给父级

Kor*_*mie 5 ruby

我正在和Jim Weirich一起观看截屏视频,他开始做这样的事情:

class Subuser < User("Type")
end
Run Code Online (Sandbox Code Playgroud)

Ruby是否允许您在定义父类时传递参数?我无法想出一个实际可行的例子.

Ste*_*fan 7

你可以通过声明一个User接受参数并返回一个类的方法来做到这一点:

class Admin
end

class Client
end

def User(arg)
  case arg
    when :admin
      Admin
    when :client
      Client
  end
end

class Subuser < User(:admin)
end

Subuser.superclass
# => Admin
Run Code Online (Sandbox Code Playgroud)

  • 像这样的巫术,虽然在截屏视频中很酷,但对其他人来说维护并不是很有趣.记住"其他人"经常包括你未来的自我,忘记了这种事情的意义.运气好的话,你可以找到这个答案并在发生这种情况时恢复记忆,但最好先避免. (3认同)
  • @Joshua Creek - 我看到的唯一大写方法是在Kernel(Integer,Float,Array)中定义的转换方法,但这些方法返回的是它们类型的对象而不是类.所以是的,我同意tadman,这段代码很臭. (2认同)