gpt4 book ai didi

ruby - 我很难理解一些 Ruby 代码

转载 作者:太空宇宙 更新时间:2023-11-03 17:04:50 25 4
gpt4 key购买 nike

我很难理解 codecademy 中的两行代码。

require 'prime'

def first_n_primes(n)
"n must be an integer" unless n.is_a? Integer
"n must be greater than 0" if n <= 0
prime = Prime.instance
prime.first n
end

first_n_primes(10)

你能解释一下Prime.instance是什么意思以及prime.first n是什么吗?

最佳答案

素数是一个普遍的概念,您无需在每次使用代码时考虑创建枚举数/素数集的不同实例。 (理想情况下)它应该与您调用单例方法的模块/方法类似:

Math.sin(0)

而不是错误的形式:

Math.new.sin(0)

然而,Prime类被(错误地)设计为像上面的后一种形式一样使用:

Prime.new.each(30)

只有一个素数枚举器实例(即 Prime 是一个单例类)。所以出于历史原因,这种用法被保留了下来(直到 Ruby 2.2),但后来注意到,既然是单例,应该鼓励用 new 代替通过 instance :

Prime.instance.each(30)

与包含 Singleton 的类一样模块做。

关于您的 first n , 它需要第一个 n来自枚举器的元素。

关于ruby - 我很难理解一些 Ruby 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35500439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com