Feature #5554

A method that applies self to a Proc if self is a Symbol

Added by Tsuyoshi Sawada over 2 years ago. Updated over 1 year ago.

[ruby-dev:44780]
Status:Rejected
Priority:Normal
Assignee:-
Category:-
Target version:-

Description

Often, you want to apply a Proc to self if self is a Symbol, but not do anything if otherwise. In this case, something I call Object#desymbolize may be convenient:

proc = ->sym{
    case sym
    when :small_icon  then "16pt"
    when :medium_icon then "32pt"
    when :large_icon  then "64pt"
    end
}
:small_icon.desymbolize(&proc) => "16pt"
"18pt".desymbolize(&proc) => "18pt"

An implementation may be as follows:

class Object
def desymbolize; self end
end
class Symbol
def desymbolize ≺ pr.call(self) end
end

History

#1 Updated by Nobuyoshi Nakada over 2 years ago

なかだです。

(11/11/03 3:51), Tsuyoshi Sawada wrote:

Often, you want to apply a Proc to self if self is a Symbol, but not do anything if otherwise. In this case, something I call Object#desymbolize may be convenient:

proc = ->sym{
    case sym
    when :small_icon  then "16pt"
    when :medium_icon then "32pt"
    when :large_icon  then "64pt"
    end
}
:small_icon.desymbolize(&proc) => "16pt"
"18pt".desymbolize(&proc) => "18pt"

"often"というのは疑問がありますし、特にSymbolに関係する機能とも思えませ
ん。Hashではどうでしょうか。

desymbol = Hash.new {|h, k| k}
desymbol[:smallicon] = "16pt"
desymbol[:medium
icon] = "32pt"
desymbol[:large_icon] = "64pt"

desymbol[:small_icon] #=> "16pt"
desymbol["18pt"] #=> "18pt"

--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦

#2 Updated by Tsuyoshi Sawada over 2 years ago

本当は、意図したのは、どのようなSymbolがあるか簡単には分からない場合、もしくは別のところで関連するメソッドが定義されていて、Symbolの一覧を複数の場所で更新しなければならなくなる場合で、例えば次のような場合です:

    proc =>sym{somemethodchain.send(sym)} # sym can be :foo, :bar, ..., which are defined elsewhere

でも、中田さんのおっしゃているのも分かります。

#3 Updated by Yukihiro Matsumoto over 2 years ago

  • Status changed from Open to Feedback

ごめんなさい。「本当に意図したのは」という部分の意図が読み取れません。
どのような局面でどのように嬉しいか(たとえば劇的にシンプルに記述できるから)を表現してください。
ただ単に「こんな風に書きたいと私が感じる」だとたぶん不十分です。
自分でメソッド定義するかActiveSupportに提案すれば良いわけで。

#4 Updated by Yusuke Endoh over 1 year ago

  • Status changed from Feedback to Rejected

長期間フィードバックがない+望み薄と思われるので閉じます。

Yusuke Endoh mame@tsg.ne.jp

Also available in: Atom PDF