-1
puts "Hi"
=> "Hi"

次のように言うことができるように、このコードからリターンを取得する方法はありますか?

x = puts "Hi"

プットの結果はゼロです。からのリターンを得ることに特に興味があり%x()ますが、同じ概念が適用されるようですputs

4

2 に答える 2

2

カスタム関数を書きたくない場合の簡単な解決策は、 を使用することtapです。これは、次のように定義されたきちんとした小さな組み込みメソッドです。

class Object
    def tap
        yield self
        self
    end
end

新しく作成されたオブジェクトの操作を実行するのに特に役立ちます。これはまさにあなたが扱っているものです。この場合の使用方法は次のとおりです。

x = "Hi".tap {|obj| puts obj}

これを何度も行う必要があるときは、オブジェクトを静かに出力する「see」と呼ぶのが好きな、些細なカスタム メソッドを使用します。

class Object
    def see
        puts self
        self
    end
end

その結果

x = "Hi".see

編集: に関する私の大雑把な知識に基づいて%x、システム コマンドのソースを取得し、それを 1 つのアクションで実行することが必要だと思います。この場合、文字列として表す必要があります。

x = "destroy -device printer -reason rage".tap {|cmnd| %x{#{cmnd}}} # actually destroys printer
puts x # outputs "destroy -device printer -reason rage"
于 2013-05-05T02:46:09.863 に答える
1

私は単に行うだろう:

p x="hi"

デバッグを削除したい場合は、2 文字だけ削除してください。

于 2013-05-05T04:26:30.070 に答える