soukouki’s diary

誰かの役に立つ記事をかけたらいいなあ

2016-07-01から1ヶ月間の記事一覧

メタプログラミングRubyを読んで(4)

最終回です。 前回 eval class AAA def get_binding binding end def aaa @aaa end end aaa = AAA.new aaa.aaa # => nil aaa.bbb # NameError: uninitialized class variable @@bbb in AAA aaa.get_binding # => #<Binding:0x00000002a16ab0> eval("@aaa=123",aaa.get_binding) aaa.aaa</binding:0x00000002a16ab0>…

Rubyの継承とmix-inをdotにするツールを作った

使ってやってください。 github.com 利用方法 ソースをコピーしてくる。 それをプロジェクトのパスから実行する。 ソースのファイルのパスを入力する。 図にするmoduleを入力する。 inheritance.dotにdotファイルがが出力される。 使い勝手が悪いかもしれま…

今月のPVが100を突破しました

おお! 見ていただきありがとうございます。 これからも頑張ります。 水増しとかされてないよね?

Rubyでeachしている時に次の要素に移るキーワード

eachで今の要素の処理をやめて、次の要素に移りたい時に 「forみたいにbreakで行けるでしょー」 (1..4).each do |n| break if n<=2 p n end 「あれ?何も出ない?」 =>調べる (1..4).each do |n| next if n<=2 p n end # 3 # 4 nextでした

Rubyで入力を配列にする方法

STDIN.readlines だけです。getsなんていりません! ただ、改行は残ってしまうので、 STDIN.readlines.map(&:chomp) こうしておきましょう。

メタプログラミングRubyを読んで(3)

前回 5.5まで(一部理解できてない) 特異メソッド a = [1,2,3] b = [1,2,3] c = a def a.xx self.inject(:+) end a.xx # => 6 b.xx # NoMethodError: undefined method `xx' for [1, 2, 3]:Array c.xx # => 6 [1,2,3].xx # NoMethodError: undefined method `…

メタプログラミングRubyを読んで(2)

前回 読んでたら疲れたので第4章までで知ったこととか。 ObjectはKernelモジュールをincludeしている なので def aaa "call aaa(#{self})" end aaa #=> "call aaa(main)" [].aaa #=> "call aaa([])" /aaa/.aaa #=> "call aaa((?-mix:aaa))" 余り使うことはな…

メタプログラミングRubyを読んで(1)

メタプログラミングRuby(第2版)を図書館でリクエストしていて、今日やっと届きました。 7月30日までに返さないと <- とりあえず第3章まで読んだので覚えたこととか。 使いすぎは良くない(当たり前) メタプログラミングにも静的なものと動的なものがある。 …

rubyの%記法って色々あるんですね。

blog.toshimaru.net を見て。 使えそうなところにはどしどし使っていきたいです。

間違えてブラウザを複数起動してしまい、元のダブがわからなくなる・・・

いつも起動時には前回のセッションで開いたタブを開くようにしています。 が、間違って多重起動などをして、元のタブがわからなくなってしまったり・・・ これ今気付いたんですが、 vivaldiなら右上のゴミ箱のマークからウィンドウ(nタブ)のところからすべて…

CodeiQをCodelQだと思ってた

iとlは間違えやすいので気をつけよう!

rakeでの複数のピリオドで区切ってある拡張子について

rakeで二個以上のピリオドで区切ってある拡張子のファイル 例: a.tar.gz の拡張子を変えようとした。 やりたいこと: a.tar.gz => a.abc 結果: a.tar.gz => a.tar.abc tarの部分が拡張子と認識されなかったっぽい? task :default do p a = FileList["**/*.ta…