美文网首页
Ruby中的参数类型

Ruby中的参数类型

作者: EvanCui | 来源:发表于2017-08-30 18:37 被阅读0次

在ruby中定义方法时,传入参数的方式是非常灵活的.

传入的参数可以分为以下种类型:

  1. 必选的参数 required arguments
def method(a, b)
end

这样当你调用该方法时必须同时传入两个方法

method("allen", 25")
  1. 带有默认值的参数

def method(a, b, c=100)
end

调用:

method('allen', 'age', 50)      #=> 调用时传入c参数      a是"allen",  b是"age", c是50
method('allen', 'age')  #=> 调用时不传入c参数参数      a是"allen",  b是"age", c是默认值100
  1. 可选的参数,如果你想在运行的时候再决定要传的参数类型和数量,那要在参数前面加上一个特殊的星号(*).
 def method(*p)
 end

这样你在调用方法的时候可以传入任何数量和类型的参数,包括none.

  method
  method(25)
  method('tom', 'age', 25)

以上三种调用方式都是合法的,如果调用method时不传入参数,p表示一个空数组。如果传入多个参数,那么参数的值就是包含这些参数的数组。

  def method(*p)
     p
  end
  method(1,2,'hello')   #=> [1,2,'hello']
  1. 多种参数配合使用:

上面介绍了三种参数,那么如何混合使用这些参数呢?

首先尝试下最简单的混合方式,必选参数 + 可选参数

  def mix_method(a, b, *p)
    #[a,b,p]
  end

<p>比较容易理解,调用方式可以用以下两种:

  mix_method(1,2)     #参数对应值 a =>1, b => 2, p => []
  mix_method(1,2, 3)   #参数对应值 a =>1, b => 2, p => [3]

现在我们定义一个参数复杂些的方法,包含无规则顺序的必选和可选参数

  def mix_method(a, b, *p, q)
    #[a,b,p,q]
  end

我们调用这个方法时可以传入3或者3个以上的参数,这种情况下必选参数会优先被指定,如果还有剩余的值会以数组的形式指定给可选参数

  mix_method(1,2,3)   # a => 1,  b=>2, p => [], q => 3
  mix_method(1,2,3,4) # a => 1,  b=>2, p => [3], q => 4
  mix_method(1,2,3,4,5) # a => 1,  b=>2, p => [3, 4], q => 4

包含必选,可选和默认值的参数

  def  mix_method(a, b, c=100,*p, q)
    #  [a,b,c,p,q]
  end

同样该方法可以传入3个和3个以上的参数

  mix_method(1,2,3)   # a => 1,  b=>2,  c => 100, p => [], q => 3
  mix_method(1,2,3,4) # a => 1,  b=>2,  c => 3, p => [], q => 4
  mix_method(1,2,3,4, 5) # a => 1,  b=>2,  c => 3, p => [4], q => 5
  mix_method(1,2,3,4,5,6) # a => 1,  b=>2,  c => 3, p => [4,5], q => 6
  1. 通过上面的几个例子证明了ruby中定义方法参数的灵活性,但是定义方法时有一个准则必须遵守,那就是可选参数不能定义在带有默认值的参数之前,如:
  def mix_method(a, b = 5, *p)   #正确
  def mix_method(a, *p, b = 5)   #错误,会报一个语法错误

相关文章

  • Ruby中的参数类型

    在ruby中定义方法时,传入参数的方式是非常灵活的. 传入的参数可以分为以下种类型: 必选的参数 required...

  • ruby入门

    ruby数据类型:Number、String、Bool、Array、Hash 赋值 ruby中的变量,不需要做类型...

  • ruby 方法参数中*的表示

  • rubocop 风格检查结果分析

    rubocop 作为ruby代码检查工具,对规范代码风格有很强的作用。使用 -D 参数会显示错误类型,方便总结归类...

  • Java泛型

    泛型:即“参数化类型”。就是将类型由原来的具体的类型参数化,类似方法中的变量参数,此时类型定义成参数形式。有点难以...

  • EffectiveJava第5章-泛型

    第23条:请不要在新代码中使用原生态类型 类型参数:List中的E就是类型参数,表示列表中的元素类型参数化类...

  • ruby中的break

    ruby中的break作用 中断代码块 while 、utils循环,如果break后面有参数的话,则返回该参数。...

  • 泛型

    泛型:即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以...

  • 深入浅出Java泛型

    一 概述 泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数...

  • Java 泛型

    一 泛型概念 泛型,即“参数化类型” 将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数...

网友评论

      本文标题:Ruby中的参数类型

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