2016-06-12 118 views
-1

我在Ruby中一个新手,并可能有人请回答为什么下面的代码不产生任何输出?:方法不返回任何东西

def method(name) 
    return "Hello + #{name}" 
end 

method("Amy") 

它不给我任何结果

+1

该方法返回的东西,但你不使用它。要打印结果,只需编写'puts method(“Amy”)' –

+2

请注意,'method'实际上是Ruby中的一个保留方法名,所以在使用时请小心。 – tadman

+1

你的问题不清楚。在标题中你声称这个方法不会返回任何东西,在你说它没有产生任何输出的问题中。然后,再次,在你的问题中,你说它“没有给出任何结果”。这是三个完全不同的东西。你的*精确*问题是什么? –

回答

2

哪输出?它只返回字符串。你需要打印它或其他东西。替换最后一个方法调用:

puts method("Amy") 

然后你会发现,你可能不需要那么+,因为你已经添加name作为字符串的一部分

1

您可以使用看跌期权或打印方法打印功能结果。

puts(method("Amy")) 

或者在一个变量

hello = method("Amy") 
puts(hello) 
3

嗯,首先,当你在它没有任何输出到屏幕的方法结束返回,返回方法只应该回馈一些价值。让我来举例说明,如果你这样做:

def method(name) 
    return "Hello + #{name}" 
end 

hello = method("Amy") 

现在返回发送的值“你好+艾米”到“你好”的变量,因此“你好”有“你好+艾米”的价值。这就是回报在方法中的作用。 伟大的现在在红宝石屏幕上输出的东西,你需要使用放置。例如:

def method(name) 
    puts "Hello + #{name}" 
end 

method("Amy") 

这会打印出“Hello + Amy”。最后,如果只想打印“Hello Amy”,那么加号就没有必要了!希望它有帮助

+1

用'puts'替换'return'不会打印_“Hello + Amy”_,但它也会将方法返回值更改为'nil'。 – Stefan

1

此外,您可以省略return关键字,Ruby方法总是返回表达式的最后一行的评估结果,除非显式返回出现在它之前。如果你想明确地返回一个值,你可以使用return关键字Ex。给出如下:

def method(name) 
    "Hello " + "#{name}" 
end 

p method("Amy") 
# Output : "Hello Amy" 

def method(name) 
    return "Hello " + "#{name}" 
end 


p method("Amy") 
# Output : "Hello Amy" 

def method(name) 
    return "Bye " + "#{name}" 
    "Hello " + "#{name}" 
end 

p method("Amy") 
# Output "Bye Amy"