小编Mes*_*ssi的帖子

Ruby中这两种方法有什么区别?

Ruby中这两种方法有什么区别?

class Mod   

      def doc(str)
          ...
      end

      def Mod::doc(aClass) 
          ...
      end
end
Run Code Online (Sandbox Code Playgroud)

ruby

2
推荐指数
1
解决办法
59
查看次数

Ruby中的继承和实例变量

我知道实例变量与继承无关:

class A

  def initialize
    @x = 2
  end

end

class B < A

  def puts_x
    puts @x
   end

  def x=(value)
    @x = value
  end

end

b = B.new
b.puts_x
b.x=3
b.puts_x
Run Code Online (Sandbox Code Playgroud)

这输出:

2
3
Run Code Online (Sandbox Code Playgroud)

在这里,类B从类继承A,并@x在课堂上B没有任何与继承.

但输出是2.我想了解它.

" Ruby继承 "页面说:

由于实例变量与继承无关,因此子类使用的实例变量不能"遮蔽"超类中的实例变量.如果子类使用与其祖先之一使用的变量同名的实例变量,则它将覆盖其祖先变量的值.

我也想要这方面的任何例子.

ruby

1
推荐指数
1
解决办法
742
查看次数

两种情况有什么区别?

我想知道两种情况之间的区别:

module M
# def self.append_features(base) 
#   if base < self then p true
#   else                p false
#   end
# end
end

class C
  include M
end

if C < M then p true
else          p false
end
Run Code Online (Sandbox Code Playgroud)

输出是:

true
Run Code Online (Sandbox Code Playgroud)

但如果删除注释,输出结果为:

false
false
Run Code Online (Sandbox Code Playgroud)

为什么输出与以前的输出不同?

ruby

1
推荐指数
1
解决办法
58
查看次数

标签 统计

ruby ×3