美文网首页
Ruby参数赋值研究

Ruby参数赋值研究

作者: 二进制_73d1 | 来源:发表于2019-05-07 15:59 被阅读0次

    非常特别。

    看代码

    def fm a,b=2,c

      puts "a:"+a.to_s

      puts "b:"+b.to_s

      puts "c:"+c.to_s

    end

    def fm2(a,b=2,c=3,d)

      puts "a:"+a.to_s

      puts "b:"+b.to_s

      puts "c:"+c.to_s

      puts "d:"+d.to_s

    end

    def fm3 *e

    end

    fm 1,3  #输出1,2,3 正确。也是最少的参数调用。

    fm 1,4,3 #就是输出1,4,3

    fm2 1,2,3 #输出1,2,3,3(比普通参数个数多一个参数,所以给左边的带默认值的参数,剩下的默认参数使用默认值[第一步],然后其他参数从左到右进行对应[第二步])

    fm2 4,3,2,1  #输出4,3,2,1

    先计算个数,后赋值,这是其“智能”的匹配方法。

    如果所给实参少于普通形参个数,会有异常。刚好则只赋值给普通参数。带缺省值参数使用缺省值。

    如果所给实参个数m多于普通形参个数o,但是少于普通参数个数与带缺省值参数个数d之和:

    则缺少的个数也就是o+d-m,从右边计算o+d-m,这些无法覆盖的带缺省值的参数使用缺省值,其他的从左到右进行覆盖。

    如果超过总个数(m>o+d),有*可变参数,则赋值给可变参数。

    相关文章

      网友评论

          本文标题:Ruby参数赋值研究

          本文链接:https://www.haomeiwen.com/subject/heoeoqtx.html