Ruby方法相关

=begin

Ruby 方法跟其他编程语言中的函数非常相似  Ruby方法用于捆绑到一个单元中的一个或多个重复的语句 方法名称应以小写字母开始 如果一个方法的名称以大写字母开始 Ruby可能会认为这是一个仓鼠 一次可以正确的解析调用  方法应该定义Ruby的之前调用他们 否则会引发一个异常未定义的方法调

=end

#如果没有给参数设置默认值 则不能够调用不带参数的方法 如果设置了默认值 可以直接调用函数名 可以不设置参数或者参数个数(不超过定义的个数)任意设置

=begin

def method_name (var1 = "234234" ,var2 = "ewr")

   puts "value of parapobj is #{var1}"

end

method_name 23

method_name 23,45

method_name

=end

#返回值 在Ruby中的每一个方法返回默认值 这个返回值将是最后一个语句的值

#return 语句 return语句用于从一个Ruby方法返回一个或多个值  如果有两个以上的表达式给出 数组包含这些值将返回值 如果没有表达式 将会是nil返回值

=begin

def test

    i = 100

    j = 10

end

 puts "value is #{test}"

=end

 =begin

def test

    i = 1

    j = 10

    k = 100

    return i , j ,k

end

 puts "Value of test is #{test}"

=end

 #可变数目的参数 假设声明一个方法需要两个参数 每当你调用这个方法 需要随着它传递两个参数 但是Ruby允许声明与可变数目的参数的方法 类似传入数组指针

=begin

def sample (*test)

    puts "The number of parameters is #{test.length}"

    for i in 0...test.length

        puts "The paramters are #{test[i]}"

    end

end

sample "23",3242,"123","23"

=end

#类方法 类定义之外定义一个方法时  该方法被默认标记为私有 另一方面 在类定义中定义的方为默认标示公有 可以改变默认可视性和私有标记的方法 由公有或私有的模块 每当想要方为一个类的方法 首先需要实例化的类 然后使用对象可以访问任何类的成员 Ruby提供了一个方法来访问的方法 没有实例化一个雷

=begin

class  Accounts

    def reading_charge #对象方法定义

        puts "reading charge"

    end

    

    def Accounts.return_date #类方法定义

        Accounts.new.reading_charge

   end

end

 

Accounts.return_date

Accounts.new.reading_charge

=end

 #Ruby alias 语句:方法或全局变量的别名。别名不能被定义在方法体 方法aliase保持当前定义的方法 即使方法是覆盖 不能为全局变量取别名 覆盖内置的全局变量 可能导致严重的问题

#语法:alias method-name method-name

#     alias global-variable-name global-variable-name

 alias foo bar #定义了foo的别名bar

alias $MATCH $& #定义了$MATCH函数的别名$&

 #Ruby undef语句 取消方法的定义  undef不能出现在方法体中  通过使用undef和alias 可以从超类独立修改类的接口 但注意到这可能打破程序由内部自行的方法调用

 undef bar #取消bar方法

 

posted @ 2016-08-06 11:35  Silktree  阅读(140)  评论(0)    收藏  举报