我想编写一个返回枚举数的方法(类似于file::foreach
返回的枚举数),该方法连续返回文件的每一行,但会被占用。我的第一个方法是
def chomped_lines(filename)
File.foreach(filename).map(&:chomp).each
end
my_enum = chomped_lines('my_file.txt')
....
my_enum.each { |line| .... }
这似乎是有效的,但是如果我理解正确(如果我错了,请纠正我),文件将作为一个整体进入内存,以便应用map
。
我写了一个类,我相信它能做到你想要的。它也作为一个要点发布在https://gist.github.com/keithrbennett/9f126fa17d9df5e3aacaf638b198dfb9。
在类定义之后有一些代码以几种方式来练习类。
#!/usr/bin/env ruby
class ChompedFileLines
include Enumerable
def initialize(filespec)
@filespec = filespec
end
def each
File.foreach(@filespec) { |line| yield line.chomp }
end
end
# Exercise the class:
FILESPEC = '/usr/share/dict/words'
chomped_file_lines = ChompedFileLines.new(FILESPEC)
puts; p chomped_file_lines; puts
chomped_file_lines.first(10).each { |line| p line }
chomped_file_lines_enum = ChompedFileLines.new(FILESPEC).to_enum
puts; p chomped_file_lines_enum; puts
10.times { p chomped_file_lines_enum.next }
问题内容: 假设我有一个返回sth的查询。像这样: 是否可以添加另一列来枚举每个组中的行(即,枚举具有其他角色的经理,工人和人员,而不考虑其他角色)?像这样: 使用Oracle扩展很好。 问题答案: 使用窗口功能:
问题内容: 我想知道是否有可能枚举返回的行。不根据任何列的内容,而只是产生一个连续的整数索引。例如 将返回一些内容: 它用于https://data.stackexchange.com/ 问题答案: 尝试:
我有一个实体,有一个枚举类型字段和一个具有相同枚举类型和字段名的DTO。 我使用modelMapper创建一个新对象,不需要额外的配置。 但在将dto映射到实体对象后,实体对象上的性别为空。 对象有性别,我已经检查了很多。 请帮我理解这个问题。
问题内容: 我想声明一个枚举Direction,它具有一个返回相反方向的方法(以下语法不正确,即,不能实例化枚举,但它说明了我的观点)。这在Java中可行吗? 这是代码: 问题答案: 对于那些按标题吸引的人:是的,您可以在枚举中定义自己的方法。如果您想知道如何调用这种非静态方法,则可以使用与其他任何非静态方法相同的方法- 在定义或继承该方法的类型实例上调用它。如果是枚举,则此类实例仅为s。 因此,
我想用:调用它。但它不喜欢: