Ruby 方法


#!/usr/bin/ruby
# -*- coding:UTF-8 -*-

# 方法
    # 方法名应以小写字母开头. 如果以大写字母开头, Ruby 可能会把它当作常量.
    # 方法应在调用之前定义, 否则 Ruby 会报出未定义的方法调用异常.

# 不带参数的方法
def method1
    puts "Hello Ruby"
end

# 带参数的方法
    # 使用带参数方法最大的缺点是调用方法时需要记住参数个数. 如果参数个数不对, Ruby 会报错. 
def method2(name, age)
    puts name, age
end

# 方法的返回值
    # Ruby 中每个方法默认返回最后一个语句的值.
def max_method(num1, num2)
    num1 > num2 ? num1 : num2
end

# return 语句
    # return 语句用与从 Ruby 方法中返回一个或多个值.
    # return 或
    # return 1 或
    # return 1, 2, 3
def return_method
    i = 100
    j = 200
    k = 300
    return i, j, k 
end


# 可变数量的参数
def mutable_parameters_method(*test)
    puts "参数个数为 #{test.length}"
    for i in 0 ... test.length
        puts "第 #{i} 个参数 = #{test[i]}"
    end
end


# 类方法
    # 方法定义在类的外部, 方法默认标记为 private.
    # 方法定义在类中的, 则默认标记为 public.
    # 方法默认的可见性和 private 标记, 可通过模块的 public 或 private 改变. 
    # 当你想要访问类的方法时, 您首先需要实力化类. 
class Class1
        def test
        end
       # Ruby 提供了一种不用实例化即可访问方法的方式. 声明如下.
    def Class1.class_method
        puts "call class method"
    end
end


# alias 语句
    # 这个语句用于为方法或全局变量起别名. 
    # 别名不能在方法主体内定义.
    # 即使方法被重写, 方法的别名也保持方法的当前定义. 
alias alias_method1 method1
 



# undef 语句
    # 这个语句用于取消方法定义. undef 不能出现在方法主体内.
    # 通过 undef 和 alias, 类的接口可以从父类独立修改.
    # 但请注意, 在自身内部方法调用时, 它可能会破坏程序. 

undef alias_method1


method1
method2("xiaoMing", 12)
puts max_method(6, 2)
puts return_method

mutable_parameters_method(-1, 0, 1, 2, 3, 4)

Class1.class_method

puts "别名 #{alias_method1}"

你可能感兴趣的:(Ruby 方法)