Ruby:常量、模块、散列
我学习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
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
。