[#8257] Re: Smalltalk [Re: design patterns] — 助田 雅紀 <masaki.suketa@...>

助田です。

11 messages 1998/06/09
[#8259] Re: Smalltalk [Re: design patterns] — KIMURA Koichi <kkimura@...> 1998/06/10

[#8262] TkGrid do not exist? — Hiramatu Yoshifumi <hiramatu@...>

平松です。

26 messages 1998/06/10
[#8266] Re: TkGrid do not exist? — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#8269] Re: TkGrid do not exist? — NAGAI Hidetoshi <nagai@...> 1998/06/10

永井@知能.九工大です.

[#8271] Re: TkGrid do not exist? — NAGAI Hidetoshi <nagai@...> 1998/06/10

永井@知能.九工大です.

[#8375] new MethodIndex — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

21 messages 1998/06/16
[#8447] new MethodIndex — TEI meiki <tei@...> 1998/06/20

こんにちは、鄭です。

[#8448] new MethodIndex — TEI meiki <tei@...> 1998/06/20

再び、鄭です。_o_

[#8418] how to use delegate — gotoken@... (GOTO Kentaro)

ごとけんです

18 messages 1998/06/18
[#8419] Re: how to use delegate — matz@... (Yukihiro Matsumoto) 1998/06/19

まつもと ゆきひろです

[#8420] Re: how to use delegate — gotoken@... (GOTO Kentaro) 1998/06/19

ごとけんです

[#8421] Re: how to use delegate — matz@... (Yukihiro Matsumoto) 1998/06/19

まつもと ゆきひろです

[#8521] hash sort — "Kazuhiro Yoshida" <s95l980@...>

もりきゅうです。

34 messages 1998/06/26
[#8523] hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8533] Re: hash sort — WATANABE Hirofumi <watanabe@...> 1998/06/26

わたなべです.

[#8534] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8536] Re: hash sort — Sinichiro Dezawa <dezawa@...> 1998/06/26

出沢です

[#8538] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8539] Re: hash sort — TAKAHASHI Masayoshi <maki@...> 1998/06/26

高橋です。

[#8541] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8546] Re: hash sort — Tadayoshi Funaba <tadf@...> 1998/06/26

ふなばです。

[ruby-list:8489] xmp

From: gotoken@... (GOTO Kentaro)
Date: 1998-06-23 22:18:39 UTC
List: ruby-list #8489
ごとけんです

def xmp(arg) # prints expample code and the result line by line
  __res__ = []
  eval arg.gsub(/^(.*)\n/){"__res__ << (#{$1}).inspect;"}
  arg.split(/\n/).each_with_index{|l,i|
    print "#{l}\n    ==> #{__res__[i]}\n"
  }
end

ruby 初めての人に動作を説明するために小さいコードの
動作を提示したいとき、p や eval.rb や irb を使えば
良いのは分かってます。
んが、 irb --symple-prompt の出力がちょっと気に
入らないけど、こないだ irb をいぢる時間が無くて、
どうせ簡単なコードにしか使わないやと思って
上のような簡単なものを書いてみました。
そしたら相当気に入ったので ^^; 見せびらかしに来ました ^^;;;

いちおう説明すると引数は改行文字で区切られた
式の列です。各行で式が完結してる必要があります。
例えば 「xmp "a = Math::PI\n(3..4) === a\n"」は

a = Math::PI
    ==> 3.14159
(3..4) === a
    ==> true

となります。

# 要するに授業の板書とレジメの書き方を揃えるためなんです ^^;;
# もし irb で「ほぼ同じ出力」ができればそっちが良いに
# 決まってますが設定に挫折しました /(-_-;
# あと、irb でオプションが --symple-prompt になってます。
#                             ^
# --simple-prompt ですよね。もう直ってますか? 
     ^

なお典型的には以下のように使います。

#------------------------------------ ここから
print "例1\n"
xmp <<EXAMPLE
foo = "こんちわ"
bar = foo
foo2 = foo.dup
bar.sub!("ん", "にゃにゃ")
bar
foo
foo2
EXAMPLE

print "\n例2\n"
xmp <<EXAMPLE
a = "The moon Fly"
b = [a.split, "TO", "Me"]
b = b.flatten
b.sort.join(" ").capitalize
EXAMPLE
#------------------------------------ ここまで

をファイルにして実行すると以下のようになります: 

例1
foo = "こんちわ"
    ==> "こんちわ"
bar = foo
    ==> "こんちわ"
foo2 = foo.dup
    ==> "こんちわ"
bar.sub!("ん", "にゃにゃ")
    ==> "こにゃにゃちわ"
bar
    ==> "こにゃにゃちわ"
foo
    ==> "こにゃにゃちわ"
foo2
    ==> "こんちわ"

例2
a = "The moon Fly"
    ==> "The moon Fly"
b = [a.split, "TO", "Me"]
    ==> [["The", "moon", "Fly"], "TO", "Me"]
b = b.flatten
    ==> ["The", "moon", "Fly", "TO", "Me"]
b.sort.join(" ").capitalize
    ==> "Fly me to the moon"

-- gotoken

In This Thread

Prev Next