跳转到内容

Ruby 编程/编写方法

来自维基教科书,开放书籍,开放世界

← 数据类型 | 类和对象 →


方法定义

[编辑 | 编辑源代码]

方法定义以 def 关键字开始,以 end 关键字结束。一些程序员发现 Ruby 中的方法定义符号非常类似于 Python 的符号。

def myMethod
end

要定义一个带参数的方法,可以在方法名后面的小括号中放入变量名。当方法被调用时,方法中的代码将在一个名为指定参数的局部变量中运行。

def myMethod(msg)
  puts msg
end

如果需要多个参数,可以使用逗号分隔。

def myMethod(msg, person)
  puts "Hi, my name is " + person + ". Some information about myself: " + msg
end

调用方法

[编辑 | 编辑源代码]

您可以使用或不使用括号调用方法,尽管省略括号可能被认为是不好的风格,因此安全的方法是在一开始始终使用括号,直到您知道何时可以省略它们。

# With parentheses
myMethod()

# Without parentheses
myMethod

如果要使用参数调用方法,则需要将参数放在括号内(或者如果您省略了括号,则放在“无形”括号内),并且如果有多个参数,则用逗号分隔。

def myMethod(a, b)
  puts a + b
end

myMethod(1, 2)
myMethod 1, 2
myMethod("abc", "xyz")

您也可以使用变量的值作为参数。

def myMethod(a)
  puts "Hello " + a
end

name = "World"
myMethod(name)

默认值

[编辑 | 编辑源代码]

通常,方法可能具有许多(如果不是全部)参数,这些参数可能具有巧妙的默认值。每次调用方法时都必须指定所有参数可能很麻烦。因此,可以定义默认值。这实际上非常容易;只需在定义中为参数赋值即可。您可以组合有和没有默认值的参数。

def myMethod(message="This is a default value")
  puts message
end

myMethod()
myMethod("Where has the default value gone?")

返回值

[编辑 | 编辑源代码]

您通常希望方法返回一个值。您可以使用return语句来实现。

def myMethod
  return "Hello"
end

puts myMethod()

但是,因为 Ruby 开发者很懒,他们开发了一个总是返回最后一个求值语句的功能(有时很难知道哪个语句是最后一个)。了解这一点,您可以将上面的示例改为以下示例

def myMethod
  "Hello"
end

puts myMethod()

注意,一个return语句将结束方法的执行。结合您可以不返回值返回这一事实,这在某些条件满足时停止方法进一步执行通常很有用。

def myMethod
  while true
    puts "Because the condition of this while loop is 'true' it will run forever, right?"
    return
  end
end

此页面只是为了简单介绍如何在 Ruby 中使用方法,因为这是一个非常重要的概念。但是,有一个关于方法以及这里未提及的一些其他很酷功能的 更详细的页面

华夏公益教科书