繁体   English   中英

方法参数在Ruby中如何工作?

[英]How do method arguments work in Ruby?

我似乎无法找到一个回答这个问题,我已经检查了两本书似乎有经验的程序员谁是新的红宝石,而不是初学者编程以及 Ruby来写。 我正在努力了解方法参数如何工作以及它们的目的是什么。 例如,我可以理解:

def method_name
  # method behaviour
end

然后,每当我想重新使用该特定批代码时,我只需重新输入method_name,Ruby就会重复该方法中指定的操作。 但是,我见过的大多数方法都在名称后面紧跟括号中的参数,即

def method_name (argument1, argument2)
  # method behaviour
end

我正在努力理解参数的含义以及它们如何影响代码的功能。 另外,为什么某些方法需要参数,而其他方法却不需要? 参数代表用户的输入吗? 它们类似于params吗?

就像您说的那样,将参数当作参数来考虑(这两个词的含义略有不同,但这对您的理解而言并不重要。)

输入参数以在方法行为中使用。

def add(arg1, arg2)
    sum = arg1 + arg2
    return sum
end

然后,您可以使用一些参数来调用该方法:

result = add(1, 2)
# result equals 3

函数参数不仅适用于Ruby。

例如,考虑一个数学函数f(x) = x^2 ,其中x是输入,并且该函数仅使用该输入返回输出,在这种情况下为x平方。

此概念适用于多种语言的编程,在这些语言中,参数可用于指定函数和函数调用者之间的约定,以修改函数的行为。

在红宝石中,上述数学函数可以定义为:

def square(x)
  x ** 2
end 

square(3) #=> 9
square(4) #=> 16

方法可以选择接受参数,设计者可以选择是否包含此选项。 有时包括此选项很有意义,有时则没有。 您将在编写更多代码时看到它。

没有参数的例子

def say_hello
  puts "hello"
end

#calling the method
say_hello #=> hello

此方法只是设计为在调用时打个招呼,效果很好。

带参数的例子

def say_personal_hello(name)
  puts "hello #{name}"
end

#calling the method with an argument
say_personal_hello("mszub") #=> hello mszub

但是此方法带有一个参数,因为我希望通过在其中添加特定名称来对其进行个性化设置。 如果您愿意,例如,该名称可以是用户输入:

puts "What's your name?"
input_name = gets.chomp

def say_personal_hello(input_name)
  puts "hello #{input_name}"
end

say_personal_hello(input_name)

希望这可以帮助。 祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM