2

私の以前の質問を見たことがあれば、Rubyに関しては私が大きなnubyであることをすでに知っているでしょう。そこで、Cプログラミングを対象としたこのWebサイトを発見しましたが、Cでできることはすべて、Rubyでも可能である必要があると思いました(さらに読みやすくなっています)。

課題は、たくさんの数字を印刷することです。私はこの気の利いたメソッド.upto()を発見し、ブロックを使用しました(そして実際にその目的を理解しました)。ただし、IRbでは、予期しない動作が発生しました。

class MyCounter
    def run 
    1.upto(10) { |x| print x.to_s + " " } 
    end
end


irb(main):033:0> q = MyCounter.new
=> #<MyCounter:0x5dca0>
irb(main):034:0> q.run
1 2 3 4 5 6 7 8 9 10 => 1

=> 1がどこから来ているのかわかりません:Sそれ以外の場合はこれを行う必要がありますか?私はこの結果を期待しています:

1 2 3 4 5 6 7 8 9 10

回答、コメント、フィードバックをありがとうございます。

4

2 に答える 2

3

「=>1」はIRBからのものであり、コードではありません。IRBに入力するすべてのステートメントの後、「=>」プロンプトの後にそのステートメントの結果が出力されます。

関数に改行を出力してみてください。

def run 
  1.upto(10) { |x| print x.to_s + " " }
  print "\n"
end

次に、次のようになります。

irb> q.run
1 2 3 4 5 6 7 8 9 10
  => nil
于 2010-04-14T23:39:13.967 に答える
2

=>1がどこから来たのかわかりません

心配しないで。デフォルトirbでは、メソッドの実行の戻り値を出力します。

ステートメントを記述しなくてもreturn(たとえばCのように)、Rubyは最後に計算されたステートメントの値を返します。

この場合は1でした

それで全部です。

たとえば、次のことを試してください。

class WhereIsTheReturn
    def uh?
        14 * 3 # no return keyword
    end
end


whereIsIt = WhereIsTheReturn.new
hereItIs = whereIsIt.uh?
print "Here it is : #{hereItIs}\n"
于 2010-04-14T23:45:24.050 に答える