zoukankan      html  css  js  c++  java
  • alias和alias_method的区别:

    1、alias 是 Ruby 的一个关键字,因此使用的时候是 alias :new name :oldname,而 alias_method 是 module 类的一个方法,因此使用的时候是 alias_method(:newname, :oldname)有一个逗号

    2、alias_method 可以重定义,alias 不能。

    3。方法调用时的参数不同,alias_method要求参数是字符串者符号变量,alias使用变量名或者符合变量,

    4. 作用域不同

    前面有强调在顶级作用域main中,只能通过alias进行别名定义,而不能使用alias_mehtod是因为在main中调不到Module#alias_method方法,而alias是关键字的缘故,所以能正常在main中使用。

    ⚠️:通过alias定义方法别名,其变量self的内容是固定不变的,即self所代表的是调用的对象,而alias_method方法中的self却是在运行时确定的,看下面代码:

    alias实例代码
    class User
    
      def full_name
        puts "Johnnie Walker"
      end
    
      def self.add_rename
        alias :name :full_name
      end
    end
    
    class Developer < User
      def full_name
        puts "Geeky geek"
      end
      add_rename  #执行类方法,但alias是关键字,在定义时,已经绑定了self为User
    end
    
    Developer.new.name #=> 'Johnnie Walker'
    alias_method示例代码
    class User
    
      def full_name
        puts "Johnnie Walker"
      end
    
      def self.add_rename
        alias_method :name, :full_name
      end
    end
    
    class Developer < User
      def full_name
        puts "Geeky geek"
      end
      add_rename   #执行类方法。self是Developer。
    end
    
    Developer.new.name #=> 'Gekky geek'


  • 相关阅读:
    jmeter测试mysql数据库之JDBC请求
    接口测试浅谈
    python import xxx 与 from xxx import xx 模块引入的区别
    交互模式下测试python代码及变量的四则运算
    python入门之一python安装及程序运行
    zabbix命令之:zabbix_get命令
    snmpwalk工具使用
    zabbix基础知识
    Centos7.5 rpm安装zabbix_agent4.0.3
    mysql常用命令
  • 原文地址:https://www.cnblogs.com/chentianwei/p/9541312.html
Copyright © 2011-2022 走看看