[#37959] [Bug:trunk] I can modify literals — Yusuke ENDOH <mame@...>

遠藤です。

13 messages 2009/02/10

[#38005] Is URI.decode() broken? — MOROHASHI Kyosuke <moronatural@...>

もろはしです。いつもお世話になっております。

39 messages 2009/02/14
[#38006] Re: Is URI.decode() broken? — Nobuyoshi Nakada <nobu@...> 2009/02/14

なかだです。

[#38009] Re: Is URI.decode() broken? — "NARUSE, Yui" <naruse@...> 2009/02/14

成瀬です、

[#38016] Re: Is URI.decode() broken? — Fujioka <fuj@...> 2009/02/15

xibbarこと藤岡です。

[#38017] Re: Is URI.decode() broken? — "NARUSE, Yui" <naruse@...> 2009/02/15

成瀬です。

[#38040] Re: Is URI.decode() broken? — akira yamada / やまだあきら <akira@...> 2009/02/17

NARUSE, Yui さんは書きました:

[#38124] Re: Is URI.decode() broken? — "NARUSE, Yui" <naruse@...> 2009/03/03

成瀬です。

[#39214] Re: Is URI.decode() broken? — akira yamada / やまだあきら <akira@...> 2009/09/02

(2009年03月03日 22:45), NARUSE, Yui さんは書きました:

[#39218] Re: Is URI.decode() broken? — "NARUSE, Yui" <naruse@...> 2009/09/02

成瀬です。

[#39236] Re: Is URI.decode() broken? — Tanaka Akira <akr@...> 2009/09/05

In article <4A9E44DD.6050706@airemix.jp>,

[#39242] Re: Is URI.decode() broken? — KOSAKI Motohiro <kosaki.motohiro@...> 2009/09/07

小崎@思いつきを適当に書いてみるテスト

[#39246] Re: Is URI.decode() broken? — Tanaka Akira <akr@...> 2009/09/07

In article <20090907091830.2C7A.A69D9226@jp.fujitsu.com>,

[#38096] 多重代入やメソッド引数の展開でto_aが呼ばれます — nagachika <nagachika00@...>

nagachika と申します。

10 messages 2009/02/26

[#38098] ブロック引数と括弧・引数なしsuper — Shugo Maeda <shugo@...>

前田です。

12 messages 2009/02/27

[ruby-dev:38068] Re: Add option hash support to rb_scan_args()

From: "Akinori MUSHA" <knu@...>
Date: 2009-02-23 04:06:56 UTC
List: ruby-dev #38068
At Sun, 22 Feb 2009 00:36:27 +0900,
matz wrote:
>
> まつもと ゆきひろです
>
> In message "Re: [ruby-dev:38057] Re: Add option hash support to rb_scan_args()"
>     on Fri, 20 Feb 2009 22:31:25 +0900, Yusuke ENDOH <mame@tsg.ne.jp> writes:
>
> |キーワード引数らしい引数の受け取り方というと、C API より
> |Ruby レベルの方が気になります。
> |近い将来、新しい文法を導入する予定や構想はあるのでしょうか。
>
> 予定や構想はあります。が、時期はなんとも。2.0になりそうです
> し、その時期は完全に未定です。

[ruby-dev:23533] に提案がありますね。構文もさりながら、C APIの
設計もなかなか大変そうです。argc/argvで表せないと多くのAPIを直す
必要が出てくるとか、受け渡しはfirst classなHashでいいのかとか、
引数解析のパフォーマンスはどうかとか。

> |例えば、こんな感じに書けるとか。
> |
> |  def foo(x, y, z, a: "a", b: "b", c: "c")
> |    p [x, y, z, a, b, c]
> |  end
> |
> |  foo(1, 2, 3, c: "X")  #=> [1, 2, 3, "a", "b", "X"]
>
> という風に書けるようにしたいと思っています。

 順序なし名前引数というのもあった方がいいんじゃないでしょうか。
でないと、順序に依存した用法が広まって引数を廃止することが難しく
なりそうです。

 あとは、

- 必須引数にも名前を付けたい

- 実装上仮引数名は短くしたいがAPIとしての名前(キーワード)は長く
  わかりやすくしたい

という要求も考慮し、名前に加えて仮引数名も指定できるように考えて
みたのが以下の構文です。

# Ruby
def meth(mand1: var1,           # leading mandatory argument(s)
         opt1: var2=val,        # ordered optional argument(s)
         *varlen: var3,         # variable length arguments
         mand2: var4            # ordered mandatory argument(s)
         opt2:: var5=val        # unordered argument(s)
         **var6,                # all arguments in hash
         &block)
  # ..
end
# The var1, var2, var3, var4, var5 parts (formal parameter names)
# above are omittable.

methodname(x, y)                # := meth(mand1: x, mand2: y)
methodname(x, z, y)             # := meth(mand1: x, opt1: z, mand2: y)
methodname(x, y, varlen: l)     # := meth(mand1: x, varlen: l, mand2: y)
methodname(x, y, :varlen => l)  # ditto

#methodname(x, y, h)		# not allowed anymore
methodname(x, y, **h)		# but hash splat is instead

a = [x, y]
h = { opt1: m, opt2: n }
methodname(*a, **h)             # := meth(mand1: x, opt1: m, mand2: y, opt2: n)

h1 = { mand1: x, mand2: y, opt1: r }
h2 = { opt1: p, opt2: q }
methodname(**h1, **h2)          # := meth(**(h1.merge(h2)))

--
Akinori MUSHA / http://akinori.org/

In This Thread

Prev Next