加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby可选参数和多个参数

发布时间:2020-12-17 03:47:32 所属栏目:百科 来源:网络整理
导读:我试图将方法的第一个参数设置为可选,然后是任意数量的args.例如: def dothis(value=0,*args) 我遇到的问题是,这似乎不太可能吗?当我打电话给dothis(“嘿”,“你好吗”,“好”)时,我希望它将值设置为默认值为0,但它只是使值=“嘿”.有没有办法完成这种行为
我试图将方法的第一个参数设置为可选,然后是任意数量的args.例如:

def dothis(value=0,*args)

我遇到的问题是,这似乎不太可能吗?当我打电话给dothis(“嘿”,“你好吗”,“好”)时,我希望它将值设置为默认值为0,但它只是使值=“嘿”.有没有办法完成这种行为?

解决方法

这在Ruby中是不可能的

但是有很多选择,取决于你对扩展的params做了什么,以及该方法的目的是什么.

明显的选择是

1)使用哈希语法获取命名参数

def dothis params
  value = params[:value] || 0
  list_of_stuff = params[:list] || []

Ruby有很好的调用约定,你不需要提供hash {}括号

dothis :list => ["hey","how are you","good"]

2)将值移到最后,并为第一个参数取一个数组

def dothis list_of_stuff,value=0

这样称呼:

dothis ["hey","good"],17

3)使用代码块提供列表

dothis value = 0
  list_of_stuff = yield

这样称呼

dothis { ["hey","good"] }

4)Ruby 2.0引入了名为hash的参数,它为你处理了很多选项1:

def dothis value: 0,list: []
  # Local variables value and list already defined
  # and defaulted if necessary

调用与(1)相同的方式:

dothis :list => ["hey","good"]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读