我很难理解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)
Run Code Online (Sandbox Code Playgroud)
你能解释一下什么Prime.instance意思和内容prime.first n是什么?
素数是一种普遍的概念,每次使用代码时,您都不需要考虑创建枚举器/素数集的不同实例.(理想情况下)它应该与您调用单例方法的模块/方法相当:
Math.sin(0)
Run Code Online (Sandbox Code Playgroud)
而不是错误的形式:
Math.new.sin(0)
Run Code Online (Sandbox Code Playgroud)
但是,Prime类(不正确)设计为像上面的后一种形式一样使用:
Prime.new.each(30)
Run Code Online (Sandbox Code Playgroud)
只有一个主要枚举器的实例(即,Prime是一个单例类).因此,由于历史原因,这种用法被保留(直到Ruby 2.2),但后来注意到,因为它是一个单例,所以应该鼓励它替换new为instance:
Prime.instance.each(30)
Run Code Online (Sandbox Code Playgroud)
与包含Singleton模块的类一样.
关于你的first n,它需要n来自枚举器的第一个元素.
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |