[#44237] Float を利用するRubyプログラム — SASADA Koichi <ko1@...>

 ささだです.

16 messages 2007/11/17
[#44241] Re: Float を利用するRubyプログラム — SASADA Koichi <ko1@...> 2007/11/19

 ささだです.

[ruby-list:44223] スマートな記述ありますか?

From: "Ohto, Yasunori" <Yasunori.Ohto@...>
Date: 2007-11-15 06:44:02 UTC
List: ruby-list #44223
大戸です。

みなさま、ご丁寧な返答、
ありがとうございます m_ _m

#現在、Ruby/Tk でお絵かきしたいと奮闘してます... ^_^;


私は perl から越してきたこともあって(その前はC++ですが)、
下記の場合などにはruby ではどのように表現するとすっきり
するでしょうか。

------- perl -------
# 1.ローカルなスコープを持つ領域を手軽に作る
my $a=10;
{
  my $a=20; print "$a\n";
}
print "$a\n"

# 2.すでに定義されている関数を別の関数へ渡す
sub hoge{
  print "$_[0]\n";
}
sub fuga{
  my $f= shift @_;
  &$f(10);
}
fuga(\&hoge);
------- perl ------- 

スマートではないのですが、どうしてもという場合には
以下のように対応しています。

------- ruby ------- 
# 1
a=10
lambda{
  a=20; puts a
}.call
puts a

# 2
def hoge(a)
  puts a
end

def fuga(a)
  a.call(10)
end

fuga( lambda{|a| hoge(a)} )
------- ruby ------- 

Ruby では同じことを表現する場合でも、コード量が
少なくなる傾向があってうれしいです。

また、スマートな記述方法についてお聞きすることが
あるかも知れません。


---
a.sort{|a,b| b<=>a } の件は、かなり複雑なコードの中で
発生していた現象でして、現象を突き止めるのにちょっと
苦労してしまいました。確かに、Rubyマニュアル(ピッケル)を
見ると書いてありました m_ _m

すでに他の方法で解決している問題ですが、ハッシュと
再帰を用いたアルゴリズムでなかなか理解できない
振る舞いをされたことがあります。問題をシンプルにできれば、
ご報告したいと思います。

それでは、今後ともよろしくお願いいたします m_ _m


In This Thread