share facebook facebook twitter menu hatena pocket slack

2014.04.25 FRI

Ruby: Array#to_procその後

WRITTEN BY 山口 与力

cloudpack の ヤマグチです。

図らずも5年前の車輪を再発明してしまった前回でした。

ふと思ったのですが、Symbol#[]はどういう実装だったかなと。

class Symbol

self.to_s[nth] と同じです。

self.to_s[nth, len] と同じです。

self.to_s[substr] と同じです。

self.to_s[regexp, nth] と同じです。

self.to_s[range] と同じです。

うーむ。Stringと同じなんですね……。暴挙と承知の上でこれをオーバーライドするとしたらこんな感じでしょうか。

class Symbol
def [] *args
Proc.new {|object| object.send self, *args}
end
end

%w(vanilla caramel matcha).map &:+[" icecream"]
# => ["vanilla icecream", "caramel icecream", "matcha icecream"]

素直にブロックを書きましょう。

こちらの記事はなかの人(ヤマグチ)監修のもと掲載しています。
元記事は、こちら

山口 与力

最近うどんばかり食べてる蕎麦県民

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。