2017-10-31 6 views
2

実際には、文字列内の文字の最初のインデックスを返す関数を作成します。この関数は、2つの引数、すなわち文字列と文字を引数として取ります。文字列を繰り返して、提供された文字と照合します。私はテストのために各反復の評価を印刷していますが、同等でなければならない場合でもfalseを返します。Crystalがこれをfalseと評価するのはなぜですか?

def index_of?(obj, el) 
    unless obj.size == 0 
    num = 0 
    while num < obj.size 
     puts "#{obj[num]} == #{el} : #{obj[num] == el}" 
     num += 1 
    end 
    end 
end 

str = "hello" 
index_of?(str, "h") 

この版画:

h == h : false 
e == h : false 
l == h : false 
l == h : false 
o == h : false 
+0

をカウントインデックスを持つ文字列の各文字を反復悪いパフォーマンスを持っており、実際に落胆しています。代わりに 'Char :: Reader'を反復処理する必要があります:' obj.each_char_with_index {| char、i | char == el} 'を返す。 –

答えて

7

obj[num]ので戻っChar、文字列ではありません。 index_of?(str, 'h')を行う

が印刷されます:

h == h : true 
e == h : false 
l == h : false 
l == h : false 
o == h : false 
関連する問題