collectpath 2017-10-31 07:30:11

[Ruby] へぇ〜そう書けるんだ〜へぇ〜 このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

tools[:images][:exe][:exe] は tools[:images][:exe].call(:exe) と同義で

引数に意味は無いけどブロック実行されるのを利用したコードだと思われる。

さらに内部で一見再帰っぽく書かれているコードは単純に内部で定義したブロックを呼び出しているだけ。

def tools
  {
    users: {
      exe: -> (arg) {
        AnyClass.new(tools[:data][:list])
      },
      data: {
        list: [1, 2, 3]
      }
    },
    images: {
      exe: -> (arg) {
        tools[:users][:exe][:exe]
      },
      data: {
        url: "./assets/image.png"
      }
    }
  }
end

tools[:images][:exe][:exe]

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント

まだコメントがありません。最初にコメントを残しませんか?

コメント投稿には、twitter認証が必要です。

Twitter認証