From: Evan Phoenix Date: 2011-10-18T08:13:46+09:00 Subject: [ruby-core:40189] Re: [Ruby 2.0 - Feature #5454] keyword arguments This looks very interesting! Would someone be willing to translate to english? I've only got a vague idea of what is being discussed. -- Evan Phoenix // evan@phx.io On Monday, October 17, 2011 at 3:55 PM, Yukihiro Matsumoto wrote: > > Issue #5454 has been updated by Yukihiro Matsumoto. > > > |������������������������������������������������������������������������������ 2.0 ��������� > |������������������������������������������������������ trunk ������������������������������ > |������������������������������ > > ���������������trunk������������������������������������������������������������������ > ������������1.9������������������������������������������������������������������������ > ������������ > > |������������������������������������ > | > | - ��������������������������������������������������������������� > | > | 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") > > nil������������������������������ > > | - rest ��������������������������������������������������������������������������� > | ������������ > | > | def foo(str: "foo", num: 424242) > | end > | foo(check: true) #=> ArgumentError? > > ������������������������������������������������������������������������**��������������� > ������������������������������������������������������������������������������������������ > ������������������������������������������������������������������ > > | - Hash ��������������������������������������������������������������������������� > | ������������������ (������������������������ T_HASH ������������������) > > ���������������to_hash������������������������������������to_kw��������������������� > ��������������������������������������������������� > > | - ��������������������������� > | > | 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 > | ) > > ��������������������������������� > > ������������ ������������ /:|) > > ---------------------------------------- > Feature #5454: keyword arguments > http://redmine.ruby-lang.org/issues/5454 > > Author: Yusuke Endoh > Status: Assigned > Priority: Normal > Assignee: Yukihiro Matsumoto > Category: > Target version: 2.0.0 > > > ��������������� > > ��������������������������������������������������� > > $ 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 > > > -- > http://redmine.ruby-lang.org