📜  ruby 方法 - Ruby (1)

📅  最后修改于: 2023-12-03 15:34:46.031000             🧑  作者: Mango

Ruby 方法

在 Ruby 编程语言中,方法是用来执行特定任务的可复用代码块。Ruby 的方法非常灵活,可以接受任意数量、任意类型的参数,也可以返回任意类型的值,使得 Ruby 程序的模块化编程变得非常容易。

定义方法

在 Ruby 中,定义方法使用 def 关键字,后跟方法名、参数列表和方法体。例如,下面定义了一个简单的加法方法:

def add(a, b)
  return a + b
end

该方法接受两个参数 ab,并将它们相加返回。可以使用 return 语句返回一个值,也可以省略 return,最后执行的表达式将被隐式地返回。

方法参数

在 Ruby 中,方法参数有很多种形式,如无参、默认参数、可变参数等。下面给出一些例子:

无参方法

定义一个没有参数的方法很简单,只需要在方法名后省略参数列表即可:

def hello
  puts "Hello, World!"
end
默认参数

如果参数列表中给出一个参数的默认值,那么调用该方法时可以省略这个参数,使用默认值:

def greet(name="World")
  puts "Hello, #{name}!"
end
可变参数

有时候需要定义一个接受可变数量参数的方法,Ruby 中使用 * 前缀来定义可变参数:

def average(*numbers)
  sum = numbers.inject(0) { |result, element| result + element }
  return sum / numbers.size.to_f
end

在调用时,可以传入任意数量的参数:

puts average(1, 2, 3, 4)  # 输出 2.5
puts average(2.0, 2.5, 3.0)  # 输出 2.5
方法返回值

在 Ruby 中,方法可以显式使用 return 语句返回值,也可以隐式返回最后一个表达式的值。另外,在无返回值的情况下,Ruby 方法返回 nil

下面是一个返回值的例子:

def greater_than_10(number)
  if number > 10
    return true
  else
    return false
  end
end
方法别名

除了可以使用 alias 关键字为类和模块定义别名之外,Ruby 还允许为方法定义别名:

def average(*numbers)
  # 实现略
end

alias_method :mean, :average

上面代码为 average 方法定义了一个别名 mean

方法链

Ruby 代码中可以使用方法链,即在一个对象上多次调用方法。例如:

def formal_name(name)
  return name.split.map(&:capitalize).join(' ')
end

puts formal_name("john doe")  # 输出 "John Doe"

上面代码中,formal_name 方法将字符串 name 拆分为单词,然后将每个单词的首字母大写并拼接回去,最后返回形式化后的姓名。

小结

Ruby 方法是编程语言提供的一种强大且灵活的工具,可以显著提高代码的可读性和可维护性。在方法参数、返回值和别名等方面,Ruby 提供了丰富的语法和语义,充分满足各种编程需求。