Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 所有方法都必须返回有意义的值吗?_Ruby - Fatal编程技术网

Ruby 所有方法都必须返回有意义的值吗?

Ruby 所有方法都必须返回有意义的值吗?,ruby,Ruby,以下是鹤嘴锄手册中的一段代码: def count_frequency(word_list) counts = Hash.new(0) for word in word_list counts[word] += 1 end counts end 末尾的计数设置方法的返回值。返回的值是上次计算的值 然而,我们是否不关心方法的返回值是多少?例如,我有一对嵌套的each循环,用于在控制台上绘制棋盘。计算值在方法之外是毫无意义的。我只想画一张棋盘 让返回值随情况而定是不好的,还是我

以下是鹤嘴锄手册中的一段代码:

def count_frequency(word_list) counts = Hash.new(0)
  for word in word_list
    counts[word] += 1
  end
  counts
end
末尾的计数设置方法的返回值。返回的值是上次计算的值

然而,我们是否不关心方法的返回值是多少?例如,我有一对嵌套的each循环,用于在控制台上绘制棋盘。计算值在方法之外是毫无意义的。我只想画一张棋盘


让返回值随情况而定是不好的,还是我应该一直尝试显式地设计返回有意义的值的方法?

如果该方法没有与某个预期值一起使用,则不必关心返回值。没什么好担心的

但对于计数示例,返回该值是该方法的全部要点。如果该方法没有返回该值,那么它就没有意义,并且您肯定需要在最后计算该值

在某些情况下,返回值不是方法的主要用途,但仍然希望返回某个值。其中一种情况是,该方法打算在jQuery样式的方法链中使用,如下所示:

some_object.do_this(args).do_that(args).then_do_this

在这种情况下,返回接收器非常重要。在某些库或框架中会发生这种情况,但除非您特别希望以这种方式使用它,否则您不必这样做。

如果该方法未以某种预期值的形式使用,则不必关心返回值。没什么好担心的

但对于计数示例,返回该值是该方法的全部要点。如果该方法没有返回该值,那么它就没有意义,并且您肯定需要在最后计算该值

在某些情况下,返回值不是方法的主要用途,但仍然希望返回某个值。其中一种情况是,该方法打算在jQuery样式的方法链中使用,如下所示:

some_object.do_this(args).do_that(args).then_do_this
在这种情况下,返回接收器非常重要。这种情况在某些库或框架中发生,但除非您特别希望以这种方式使用它,否则您不必这样做。

否。 在Ruby中,每个表达式都返回一个值,即使它只是nil。不仅仅是方法;你写的每一行。对于方法,返回的值是在退出之前计算的最后一个值。该值的含义取决于您。如果您记录该方法没有返回值,那么即使它返回了一个值,它也是未定义的;不是API的一部分,调用方最好不要使用它

例如,即使是nil也可以有适当的含义,如果您记录它;它通常用于表示找不到资源。然而,如果一个方法的唯一目的是执行像写入文件这样的副作用,那么它很可能是没有实际意义的东西;puts返回零。

否。 在Ruby中,每个表达式都返回一个值,即使它只是nil。不仅仅是方法;你写的每一行。对于方法,返回的值是在退出之前计算的最后一个值。该值的含义取决于您。如果您记录该方法没有返回值,那么即使它返回了一个值,它也是未定义的;不是API的一部分,调用方最好不要使用它


例如,即使是nil也可以有适当的含义,如果您记录它;它通常用于表示找不到资源。然而,如果一个方法的唯一目的是执行像写入文件这样的副作用,那么它很可能是没有实际意义的东西;puts返回nil。

不,当方法不应该像大多数其他编程语言一样返回有意义的值时,不需要返回值

事实上,最常见的方法之一puts返回nil


不,当方法不应该返回有意义的值时,返回值不是必需的,就像大多数其他编程语言一样

事实上,最常见的方法之一puts返回nil

理论上,如果您清楚地记录了返回值是无意义的,那么您可以顺便返回方法中的最后一个表达式的计算结果

然而,实际上,没有人阅读文档,所以,如果您的方法确实返回了一些东西,那么人们将依赖它。此外,根据意外返回的具体内容,可能会泄漏方法的私有内部实现细节,甚至可能会通过返回私有实例变量的值来破坏对象的封装

就拿这个吧?例如,一元前缀运算符。它被指定为返回trueish或false值。然而,在MRI上,它不仅返回任何真实值,它实际上返回一个字符串,描述被询问的表达式类型,例如' 局部变量、method等等,人们变得如此依赖于这个返回值,以至于所有其他Ruby实现都必须模仿它,即使它没有被记录在案。现在,事实证明,对于MRI来说,这些信息是微不足道的,但是对于JRuby来说,这些信息是不可用的,保留这些信息会导致性能下降

E编程语言是一种纯粹基于表达式的语言,如Ruby或Lisp。一切都是一个表达式,没有语句。一切都返回一个值。但是,与其他语言不同,子例程的隐式返回值不是在子例程中计算的最后一个表达式的值,而是nil。如果要返回有意义的内容,必须显式返回值。这是因为E的创建者认为,意外归还你不想要的东西太危险了。E是为安全性、安全性、完整性和可靠性而明确设计的。

理论上,如果您清楚地记录返回值是无意义的,那么您可以顺便返回方法中的最后一个表达式要计算的内容

然而,实际上,没有人阅读文档,所以,如果您的方法确实返回了一些东西,那么人们将依赖它。此外,根据意外返回的具体内容,可能会泄漏方法的私有内部实现细节,甚至可能会通过返回私有实例变量的值来破坏对象的封装

就拿这个吧?例如,一元前缀运算符。它被指定为返回trueish或false值。然而,在MRI上,它不仅返回任何真正的值,它实际上返回一个字符串,描述被询问的表达式类型,例如“局部变量”、“方法”等。人们已经变得如此依赖于这个返回值,以至于所有其他Ruby实现都必须模仿它,即使没有文档记录。现在,事实证明,对于MRI来说,这些信息是微不足道的,但是对于JRuby来说,这些信息是不可用的,保留这些信息会导致性能下降


E编程语言是一种纯粹基于表达式的语言,如Ruby或Lisp。一切都是一个表达式,没有语句。一切都返回一个值。但是,与其他语言不同,子例程的隐式返回值不是在子例程中计算的最后一个表达式的值,而是nil。如果要返回有意义的内容,必须显式返回值。这是因为E的创建者认为,意外归还你不想要的东西太危险了。E是为安全性、安全性、完整性和可靠性而明确设计的。

当有疑问时,返回自我。当有疑问时,返回自我。鉴于Ruby的甜蜜本质,理论和实践之间的突破是一个特别重要的点。无论出于什么原因,我总是对隐性回报感到有些困扰,而你所列举的原因正是原因。维伦·丹克。考虑到Ruby的甜性,理论和实践之间的突破是一个特别重要的问题。无论出于什么原因,我总是对隐性回报感到有些困扰,而你所列举的原因正是原因。维伦·丹克。加里福宁酒店。