Ruby:常量,模块,哈希

时间:2016-07-12 13:08:02

标签: ruby module constants

我在学习Ruby几个月后,现在我正在尝试构建一个韩语/朝鲜语/英语词典类型的东西。我给它喂了一个包含所有单词的文本文件。

到目前为止,我已经:

module Dictionary

  DICTIONARY = []

end

class File

  include Dictionary

  def self.convert(file)
    readlines(file).each do |line|
      south, north, meaning = line.split(',')
      DICTIONARY << { :south => south, :north => north, :meaning => meaning }
    end
  end

end

File.convert("dictionary.txt")

Dictionary::DICTIONARY.sort_by { |word| word[:north] }.each do |word|
  puts "#{word[:south]} is #{word[:north]} in North Korean. They both mean #{word[:meaning]}"
end

我的问题是:

1)我是否没有必要为阵列制作单独的模块? (我主要是尝试在模块和课程中进行混音)

2)正确使用数组的常量吗?我想我的想法是我想让阵列能够从外面访问,但说实话,我真的不知道我在做什么。

提前致谢。

1 个答案:

答案 0 :(得分:6)

由于您的字典是从文件加载的,因此最好使用类而不是模块,这样每个文件都可以解析为单独的字典。

File

此外,您可以看到我没有修补File类,因为$ rm ~/envs/ENV*/log/* 不仅用于创建字典,还用于各种文件操作。