Ruby alias_方法还是新方法?

Ruby alias_方法还是新方法?,ruby,Ruby,我为什么要这样使用alias_方法 alias_method :author, :name 而不是简单地做下面的事情 def author self.name end 因为它更干净,Ruby强制执行的一件事就是约定 此外,如果要更改name方法的参数数量,则必须在author方法上更改参数,而使用method\u alias则不必在多个位置更改参数 尽管如此,如果您想使用您编写的方法,并且您确信参数的数量不会改变(我确信在您的情况下不会改变),那么您可以这样做,并且没有错,但是您也不需要se

我为什么要这样使用alias_方法

alias_method :author, :name
而不是简单地做下面的事情

def author
self.name
end

因为它更干净,Ruby强制执行的一件事就是约定

此外,如果要更改name方法的参数数量,则必须在author方法上更改参数,而使用
method\u alias
则不必在多个位置更改参数

尽管如此,如果您想使用您编写的方法,并且您确信参数的数量不会改变(我确信在您的情况下不会改变),那么您可以这样做,并且没有错,但是您也不需要
self
部分,您可以这样编写:

def author
  name
end

因为它更干净,Ruby强制执行的一件事就是约定

此外,如果要更改name方法的参数数量,则必须在author方法上更改参数,而使用
method\u alias
则不必在多个位置更改参数

尽管如此,如果您想使用您编写的方法,并且您确信参数的数量不会改变(我确信在您的情况下不会改变),那么您可以这样做,并且没有错,但是您也不需要
self
部分,您可以这样编写:

def author
  name
end

因为它更干净,Ruby强制执行的一件事就是约定

此外,如果要更改name方法的参数数量,则必须在author方法上更改参数,而使用
method\u alias
则不必在多个位置更改参数

尽管如此,如果您想使用您编写的方法,并且您确信参数的数量不会改变(我确信在您的情况下不会改变),那么您可以这样做,并且没有错,但是您也不需要
self
部分,您可以这样编写:

def author
  name
end

因为它更干净,Ruby强制执行的一件事就是约定

此外,如果要更改name方法的参数数量,则必须在author方法上更改参数,而使用
method\u alias
则不必在多个位置更改参数

尽管如此,如果您想使用您编写的方法,并且您确信参数的数量不会改变(我确信在您的情况下不会改变),那么您可以这样做,并且没有错,但是您也不需要
self
部分,您可以这样编写:

def author
  name
end

alias\u方法
实际上会为您创建该方法的副本。如果您后来碰巧用一些新行为重新定义了
name
author
仍将保留原始行为。如果要保留原始行为,这非常有用。看

使new_name成为方法old_name的新副本。这可用于保留对被重写方法的访问权限


alias\u方法
实际上会为您创建该方法的副本。如果您后来碰巧用一些新行为重新定义了
name
author
仍将保留原始行为。如果要保留原始行为,这非常有用。看

使new_name成为方法old_name的新副本。这可用于保留对被重写方法的访问权限


alias\u方法
实际上会为您创建该方法的副本。如果您后来碰巧用一些新行为重新定义了
name
author
仍将保留原始行为。如果要保留原始行为,这非常有用。看

使new_name成为方法old_name的新副本。这可用于保留对被重写方法的访问权限


alias\u方法
实际上会为您创建该方法的副本。如果您后来碰巧用一些新行为重新定义了
name
author
仍将保留原始行为。如果要保留原始行为,这非常有用。看

使new_name成为方法old_name的新副本。这可用于保留对被重写方法的访问权限


编写完整的方法需要大量的时间。此外,当您想要复制更深入的方法时,可以使用
alias\u方法

最后,还有一个微妙之处

class Foo
  def bar1
    "This is bar 1"
  end

  alias :bar2, :bar1

  def bar1
    "This is sparta!"
  end
end

puts Foo.new.bar1 # => "This is sparta!"
puts Foo.new.bar2 # => "This is bar 1"
上面显示,别名始终指向第一个方法。这在考虑继承时很重要


。他们说它复制了旧方法。

编写完整的方法需要大量的时间。此外,当您想要复制更深入的方法时,可以使用
alias\u方法

最后,还有一个微妙之处

class Foo
  def bar1
    "This is bar 1"
  end

  alias :bar2, :bar1

  def bar1
    "This is sparta!"
  end
end

puts Foo.new.bar1 # => "This is sparta!"
puts Foo.new.bar2 # => "This is bar 1"
上面显示,别名始终指向第一个方法。这在考虑继承时很重要


。他们说它复制了旧方法。

编写完整的方法需要大量的时间。此外,当您想要复制更深入的方法时,可以使用
alias\u方法

最后,还有一个微妙之处

class Foo
  def bar1
    "This is bar 1"
  end

  alias :bar2, :bar1

  def bar1
    "This is sparta!"
  end
end

puts Foo.new.bar1 # => "This is sparta!"
puts Foo.new.bar2 # => "This is bar 1"
上面显示,别名始终指向第一个方法。这在考虑继承时很重要


。他们说它复制了旧方法。

编写完整的方法需要大量的时间。此外,当您想要复制更深入的方法时,可以使用
alias\u方法

最后,还有一个微妙之处

class Foo
  def bar1
    "This is bar 1"
  end

  alias :bar2, :bar1

  def bar1
    "This is sparta!"
  end
end

puts Foo.new.bar1 # => "This is sparta!"
puts Foo.new.bar2 # => "This is bar 1"
上面显示,别名始终指向第一个方法。这在考虑继承时很重要


。他们说它复制了旧方法。

@sawa关于
Module.instance\u方法:alias\u方法
@nicooga好的,我明白你的意思了。匹克威克,我之前的评论是错误的,对不起。@sawa关于
Module.instance\u method:alias\u method
@nicooga好的,我明白你的意思了。匹克威克,我之前的评论是错误的,对不起。@sawa什么