[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:001226] Re: DCL toolbox



# なんだか堀之内さんにしか行ってなかったので、ついでに書き直
# して再送します。

At Mon, 24 Jun 2002 16:42:46 +0900,
Takeshi Horinouchi wrote:
> ところで、widget って良く聞くのですが、恥ずかしながら私は良くわ
> かってません。辞書的は規格品と書いてありますが、どうもその心が
> 分からない。ここでは、DCL のメソッドを組み合わせた(便利な)複合的
> なコマンドを提供するというのが目的ですが、widget は適当でしょう
> か。

widget は「ちょっとした部品」とか「小道具」くらいの意味で使
うことが多いと思います。「規格」に重きをおくことはあまりない
んじゃないでしょうか。

例えば zsh がインストールされているとこだと zshcompwid とい
う man page が引けるのですが、これは「zshcompwid - zsh
completion widgets」というタイトルで、具体的にはシェル変数と
組み込みコマンドからなっています。

まぁ、Util でも Tool でもいいですが、Util はもっと雑多なもの
も含む印象を受けます。Tool だと part ではない感じがする。ま、
あくまで個人的な印象ですが。

> うすればいいんでしょうか。先ほどのカラーバーの例で行けば、
> 
>         def color_bar(levels, colors, options)  # ここで options はHash
> 
> だったのを、
> 
>         def color_bar(levels, colors, options, default=DCL::Tool::ColobarOps)
> 
> などとするのでしょうか。とすると、引数デフォルトは、基本的には、
> 使われないことが前提ですね。

そうですね。あと、この方法のメリットは、default を差し替える
だけで別のメソッドを仕立てることが出来る点です。例えば、

  def color_bar(levels, colors, options = {}, default=DCL::Tool::ColobarOps)
    ...
  end

に対してこういうことが出来るるわけです。

  def ht_color_bar(levels, colors, options = {}, default=DCL::Tool::ColobarOps)
    default.dup.update({....})
    color_bar(levels, colors, options, ht_default)
  end

それと、実引数の文法的な扱いはこうなります:

  def a(x, y = {}, z = {3=>4})
    p [x,y,z]
  end

  a(1)          # [1, {1=>2}, {3=>4}]
  a(1, 2=>3)    # [1, {2=>3}, {3=>4}]

つまり dafault を実引数で指定したいときは、ハッシュを表すブ
レイス { } を一切省略できません。

-- Gotoken