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"] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- flex中toolTip汇总
- ruby-on-rails – 纸夹将升级后的图像路径更改为rails 3.2
- ios – 无法从命令行生成adhoc IPA,但它可以在Xcode中运行
- postgresql – 将osm文件导入postgres / postgis数据库
- c – 为什么你不能对C中的指针进行按位操作,有没有办法呢?
- cocos2d-x win32开发环境搭建
- AjaxFileUpload结合Struts2实现多文件上传(动态添加文件上传
- c# – 类似于Silverlight的Snoop
- 有没有XML 2.0这样的东西?
- c# – 使用MVVM模式更新WPF中VisualCollection主机中的Draw