Issue #5454 has been updated by Yusuke Endoh.

Status changed from Assigned to Rejected

???????????????????????????????????議????混乱?????????????????
?? close ???????????????????

Sorry for scattering the mails and confusing the discussion.
I close this once and I'll create a new ticket.

-- 
Yusuke Endoh <mame / tsg.ne.jp>
----------------------------------------
Feature #5454: keyword arguments
http://redmine.ruby-lang.org/issues/5454

Author: Yusuke Endoh
Status: Rejected
Priority: Normal
Assignee: Koichi Sasada
Category: 
Target version: 


???????????

?????????????????????????????

  $ cat t.rb
  def foo(str: "foo", num: 424242)
    p [str, num]
  end
  foo(str: "bar")

  $ ./ruby t.rb
  ["bar", 424242]

細???????????????????????????????????????????????? 2.0 ?????
????????????確???????????????????????? trunk ??????????????????????
??????????????????????

???????????? make check ??????????? (?????????????????
?????????????????) ??????????? conflict ????????????
?????????????????????????????????????????????????????????? (vm1_
rescue ????) ?????????????????度???????????????????????


以??????????????細?????????????????

  - ???????????????????????????????????????

    def foo(str: "foo", num: 424242, **h)
      p h
    end
    foo(str: "bar", check: true)  #=> { :check => true }

  - nil ???渡?????????????????? nil ??????????

    def foo(str: "foo")
      p str
    end
    foo(str: nil) #=> nil ? (?????????????? "foo")

  - rest ??????????????????????????????????警?????????????
    欲??????

    def foo(str: "foo", num: 424242)
    end
    foo(check: true) #=> ArgumentError?

  - Hash ???????????????????????????????????????????????
    解?????????? (?????度?????? T_HASH ??????????????)

  - ?????????????????????????

    def foo(
      a, b, c,     # mandatory arguments
      opt = 1,     # optional arguments
      *rest,       # rest argument
      x, y, z,     # post mandatory arguments
      k1: 1, k2:2, # keyword arguments
      **kh,        # keyword rest argument
      &blk         # block argument
    )

  - ?????????????


benchmark results:
name    ruby 1.9.4dev (2011-10-16 trunk 33471) [i686-linux]     ruby 1.9.4dev (2011-10-16 trunk 33471) [i686-linux]     average difference
app_answer      0.259   0.131   -0.127
app_erb 2.699   2.681   -0.018
app_factorial   5.236   5.320   0.084
app_fib 1.576   1.731   0.154
app_mandelbrot  4.324   3.911   -0.413
app_pentomino   40.882  40.768  -0.114
app_raise       0.966   0.982   0.017
app_strconcat   3.143   3.102   -0.041
app_tak 2.192   2.140   -0.052
app_tarai       1.682   1.748   0.066
app_uri 1.870   1.767   -0.103
io_file_create  2.589   2.570   -0.019
io_file_read    6.169   5.838   -0.330
io_file_write   1.966   1.976   0.010
io_select       3.066   3.111   0.044
io_select2      3.647   3.623   -0.025
io_select3      0.051   0.051   0.000
loop_for        3.302   3.219   -0.082
loop_generator  1.111   1.102   -0.009
loop_times      2.959   2.960   0.001
loop_whileloop  1.437   1.422   -0.016
loop_whileloop2 0.298   0.297   -0.001
so_ackermann    1.862   1.816   -0.046
so_array        3.317   3.473   0.155
so_binary_trees 0.891   0.900   0.009
so_concatenate  9.538   8.696   -0.842
so_count_words  0.412   0.407   -0.005
so_exception    2.185   2.177   -0.008
so_fannkuch     3.338   3.334   -0.004
so_fasta        5.182   5.061   -0.121
so_k_nucleotide 3.425   3.324   -0.101
so_lists        2.239   2.312   0.073
so_mandelbrot   11.479  10.660  -0.820
so_matrix       2.206   2.177   -0.030
so_meteor_contest       11.479  11.634  0.155
so_nbody        8.006   7.925   -0.081
so_nested_loop  2.768   2.614   -0.154
so_nsieve       6.163   6.184   0.021
so_nsieve_bits  6.618   6.850   0.231
so_object       1.807   1.899   0.091
so_partial_sums 11.057  10.537  -0.520
so_pidigits     2.944   3.011   0.066
so_random       1.962   1.992   0.031
so_reverse_complement   3.136   3.036   -0.099
so_sieve        2.224   2.203   -0.021
so_spectralnorm 7.981   7.591   -0.390
vm1_block*      3.790   5.112   1.306
vm1_const*      0.756   0.757   -0.015
vm1_ensure*     0.487   0.601   0.099
vm1_ivar*       1.634   1.863   0.213
vm1_ivar_set*   1.625   1.661   0.021
vm1_length*     1.312   1.366   0.038
vm1_neq*        1.152   0.979   -0.189
vm1_not*        0.589   0.589   -0.015
vm1_rescue*     0.133   0.750   0.601
vm1_simplereturn*       2.467   3.601   1.119
vm1_swap*       1.199   1.716   0.502
vm2_array*      1.644   1.643   -0.001
vm2_case*       0.324   0.348   0.023
vm2_defined_method*     8.829   9.003   0.173
vm2_eval*       39.557  37.726  -1.832
vm2_method*     5.255   4.113   -1.142
vm2_mutex*      3.043   3.175   0.131
vm2_poly_method*        6.044   5.340   -0.705
vm2_poly_method_ov*     0.493   0.675   0.181
vm2_proc*       1.297   1.391   0.093
vm2_regexp*     2.419   2.557   0.137
vm2_send*       0.662   0.903   0.241
vm2_super*      1.107   1.016   -0.093
vm2_unif1*      0.688   0.816   0.127
vm2_zsuper*     1.210   1.068   -0.143
vm3_clearmethodcache    0.785   0.770   -0.014
vm3_gc  2.487   2.453   -0.033
vm_thread_alive_check1  0.389   0.422   0.033
vm_thread_create_join   6.064   6.181   0.118
vm_thread_mutex1        2.349   2.546   0.197
vm_thread_mutex2        10.123  7.755   -2.368
vm_thread_mutex3        4.428   5.390   0.962
vm_thread_pass  0.692   0.754   0.063
vm_thread_pass_flood    0.167   0.170   0.003
vm_thread_pipe  2.437   2.540   0.103
-----------------------------------------------------------
average total difference is -3.4518661499023438

-- 
Yusuke Endoh <mame / tsg.ne.jp>


-- 
http://redmine.ruby-lang.org