Ruby:常量、模块、散列

Ruby:常量、模块、散列,ruby,module,constants,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.spl

我学习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
模块字典
字典=[]
结束
类文件
包括字典
def self.convert(文件)
读取行(文件)。每个do |行|
南,北,意思是=直线分割(','))
字典南:北=>北:意思=>意思}
结束
结束
结束
File.convert(“dictionary.txt”)
Dictionary::Dictionary.sort_按{单词{单词[:北]}排序。每个do|单词|
将“{word[:south]}在朝鲜语中是{word[:north]}。它们都表示{word[:means]}”
结束
我的问题是:

1) 我是否没有必要为阵列制作单独的模块?(我主要只是尝试在模块和类中混合)

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


提前感谢。

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

class Dictionary
  attr_reader :content

  def initialize
    @content = []
  end

  def self.load(path)
    instance = new
    File.open(path) do |f|
      f.each_line do |line|
        instance.content << %i(south, north, meaning).zip(line.split(','))
      end
    end
    instance
  end
end
类字典
属性读取器:内容
def初始化
@内容=[]
结束
def自加载(路径)
实例=新
File.open(path)do | f|
f、 每条线都要做|

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

class Dictionary
  attr_reader :content

  def initialize
    @content = []
  end

  def self.load(path)
    instance = new
    File.open(path) do |f|
      f.each_line do |line|
        instance.content << %i(south, north, meaning).zip(line.split(','))
      end
    end
    instance
  end
end
类字典
属性读取器:内容
def初始化
@内容=[]
结束
def自加载(路径)
实例=新
File.open(path)do | f|
f、 每条线都要做|

你说的“从外面”是什么意思。您正在构建什么类型的应用程序?您可以使用dictionary创建一个
实例变量
,而不是
常量
,我建议不要污染类
文件
,因为它是一个通用类,用于读取/写入各种文件,而不仅仅是针对您的特定用例。您所说的“从外部”是什么意思。你在构建什么类型的应用程序?你可以用dictionary创建一个
实例变量
,而不是
常量
,我建议不要污染class
文件
,因为它是一个用于读/写各种文件的通用类,不仅仅针对您的特定用例。您应该从
self.load
方法返回
instance
变量。@LukasBaliak谢谢。代码是固定的。@Aetherus问题:您能解释一下“instance=new”和“instance.content”部分吗?instance=new相当于instance=self.new,其中self指类方法中的类。因此它相当于
instance=Dictionary.new
。您应该从
self.load
方法返回
instance
变量。@LukasBaliak谢谢。代码是固定的。@Aetherus问题:您能解释一下“instance=new”和“instance.content”部分吗?instance=new相当于instance=self.new,其中self指类方法中的类。因此它相当于
instance=Dictionary.new