我正在阅读Why Why's Poignant Guide。我不明白为什么在第一行“需要”是一种方法,而不是一个变量:为什么在这个例子中需要一个方法而不是变量?
require 'net/http'
Net::HTTP.start('www.ruby-lang.org', 80) do |http|
print(http.get('/en/about/license.txt').body)
end
我正在阅读Why Why's Poignant Guide。我不明白为什么在第一行“需要”是一种方法,而不是一个变量:为什么在这个例子中需要一个方法而不是变量?
require 'net/http'
Net::HTTP.start('www.ruby-lang.org', 80) do |http|
print(http.get('/en/about/license.txt').body)
end
因为它调用一个Ruby消息发送,更有甚者通常被称为在其他语言中的函数。这个特殊的'函数'加载一个名为'net/http'的引用的外部代码。有时,语法元素(如括号)作为语法便利而被省略,因此它可能看起来不像其他函数或Ruby消息发送的样子。
此说明不会帮助您理解为什么这是Ruby中的惯例,因为在实现其设计的意图之前,您需要学习大量的语法模式。一旦你意识到这个设计意图,你就可以选择“为什么”这个语法。或者,您可以研究Ruby设计讨论。
初学者,比如我自己,怎么会得出这个结论呢?什么告诉我它正在调用一个函数? –
你将不得不继续阅读和学习。这些东西在你学习的时候变得清晰。 –
这是*不是*函数调用。 Ruby没有功能。这是一个消息发送。 –
局部变量的范围很窄。如果表达式在局部变量和方法之间不明确,如果您查看当前方法体,类体,块等,并且找不到局部变量赋值,那么它将被解释为方法。
因为它需要一个参数。在Ruby中,只有消息发送有参数。
它不能是一个变量,因为没有这样一段语言语法,它包含一个由空格分隔的变量和字符串。
ergo,这必须是一个方法调用(消息发送)。
我不认为它值得downvote。 – sawa