使用ARGF和哈希?

时间:2015-06-16 23:15:41

标签: ruby hash

我试图编写一个ruby程序,其中包含一种方法,在从ARGF读取后将单个字母的氨基酸代码转换成相应的氨基酸名称。

这是我到目前为止的代码:

#!/usr/bin/ruby

def convert
aminos = Hash.new
aminos = {"A" => "alanine", "B" => "aspartate/asparagine", "C" => "cystine"}
output = aminos.values_at()
puts "#{output}"
end

ARGF.each_char do convert
end

如果我运行此程序,它会执行以下操作:

$ ruby amino_acid.rb ABC 
[]
[]
[]

当我想要它做的时候是这样的:

$ ruby amino_acid.rb ABC
alanine
aspartate/asparagine
cystine

我不确定在

之后放在括号中的内容
aminos.values_at

或者我是否走在正确的轨道上?

我想我必须将参数传递给此方法,可能类似于

def convert {|k,v| puts "#{v}}

提前致谢!

1 个答案:

答案 0 :(得分:0)

当您想根据示例代码使用ARGF时,您正在使用ARGV

code review将为您提供其他风格等途径。但我认为这会让您前进。

#!/usr/bin/env ruby
def convert(value)
  aminos = { 'A' => 'alanine', 'B' => 'aspartate/asparagine', 'C' => 'cystine' }
  aminos[value.upcase]
end

ARGV.to_s.each_char do |string|
  puts convert string
end

当然,您可以将该语句放在您的方法中,但实际上方法应该做一个非常集中的事情。传递一个参数,而不是直接作用于ARGV,可以自由地以不同的方式使用它。一般来说,一种方法应该做一件事。让它们更容易维护。