とりあえず、見よう見まねで書いてみました。
言語仕様はなんとなく抑えました。だけど、Rubyらしい書き方や
どう書くべきかというのはわかっていません。
returnも書くべきか書かないべきかよくわからないのですが、
Ruby 1.9以降はreturn書いても遅くならないとか
書いてたので書くスタイルにしています。
他力本願ですが、異論反論等あればとてもありがたいです。
習い始めの言語なんでとてもひどい書き方していると思われます。
周りにRubyistが残念なことにいないです……。
あと、関数に引数がない場合、()をつけるべきかつけないべきかも悩ましいです。
.NET以前のVBだと()有り無しで書き方が変わるというのをなんとなく思い出しました。
しょぼいプログラム(クラス使わない編)
#!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'tk' $random = Random.new def create_message arr = ["\それある!/","\それいける!/","\そーれーあるある!/"] n = $random.rand(0..2) return arr[n] end message = TkLabel.new.pack message.text = create_message TkButton.new(nil, :text => "クリック", :command => proc{message.text(create_message)}).pack Tk.mainloop
しょぼいプログラム(クラス使う編)
#!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'tk' class MyApp def get_message return @message end def create_message arr = [ "\それある!/", "\それいける!/", "\そーれーあるある!/" ] n = @@random.rand(0..2) return arr[n] end def initialize @@random = Random.new @message = TkLabel.new { pack } @message.text = create_message end # これはどうもダメらしい…… #@button = TkButton.new(nil, # :text => "クリック", # :command => proc { # get_message.text(create_message) # } #).pack end app = MyApp.new TkButton.new(nil, :text => "クリック", :command => proc { app.get_message.text(app.create_message) } ).pack Tk.mainloop
ぼくの未熟な知識でざっと調べたところ
procはクラスの中で使えないっぽいです……。
うーん微妙……
rubyではpublic, private指定するのが一般的なのかどうなのかすらもわからない……
書き方に幅がある言語だと学習コストは高い気がしています。
でも、書いてて楽しくなりそうな言語なのでがんばります(´;Д;`)!
Pythonは綺麗な言語だけど2系の呪いとガチガチに固まっているあたりがね…
それでもどちらもいい言語だと思いますが。
メモ:定数は大文字でできる。あとで直そう!