我有一个程序,该程序基本上使用一种称为reverse_complement的方法来反转字符串并将某些字符替换为其他字符。但是,如果我在同一实例中两次使用该方法,则会给我一个未定义的错误。所以,把dna1.reverse_complement.reverse_complement == dna1.nucleotide应该给我一个真实的值。但是,它给出了未定义的方法错误。
class DNA
attr_reader :nucleotide
def initialize (nucleotide)
@nucleotide = nucleotide
end
def reverse_complement()
@nucleotide.reverse.tr("ATCG", "TAGC")
end
end
dna1 = DNA.new("ATTGCC")
puts dna1.reverse_complement
puts dna1.nucleotide
puts dna2 = dna1.reverse_complement
puts dna1.reverse_complement.reverse_complement == dna1.nucleotide
这样就足够了吗:
class DNA < String
def reverse_complement
reverse.tr("ATCG", "TAGC")
end
end
dna1 = DNA.new("ATTGCC")
puts dna1
# ATTGCC
puts dna1.reverse_complement
# GGCAAT
puts dna1.reverse_complement.reverse_complement == dna1
# true
def reverse_complement
reverse.tr("ATCG", "TAGC")
end
可以写成:
def reverse_complement
self.reverse.tr("ATCG", "TAGC")
end
self
当前对象在哪里。在上面的示例中,self
isdna1
是DNA的一个实例。
警告:从核心类继承是一个坏主意。如果OP拒绝接受此答案,则该答案将被删除。有关从核心类继承的更多详细信息,请参见链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句