新手问题 Ruby 2.7 函数的最后哈希参数应怎么改?

cre16yu · 2020年07月19日 · 最后由 pinewong 回复于 2020年07月20日 · 1826 次阅读
a = b.encode('utf-8', 'gbk', {:invalid => :replace, :undef => :replace, :replace => '?'})  # 强制转换gbk编码的文本

在 Ruby2.7 里警告:warning: Using the last argument as keyword parameters is deprecated.

不是很看得懂 ruby2.7 更新说明的信息,有人可以指导一下这里的代码该怎么改吗?

2.7 发布新闻: https://www.ruby-lang.org/zh_cn/news/2019/12/25/ruby-2-7-0-released/

去掉最后参数的 {} 包裹号就没警告了吧。

a = b.encode('utf-8', 'gbk', :invalid => :replace, :undef => :replace, :replace => '?')  # 强制转换gbk编码的文本

估计 encode 这个方法的参数定义里面有“关键字参数”。Rails 这里的改动关键就是对于所有存在“关键字参数”类型的方法的参数传入问题:

  1. 普通参数传入 hash 时一定要添加 {} 包裹

  2. “关键字参数”传入 hash 时一定不要添加 {} 包裹

这样的好处就是分清了关键字参数和普通参数啊,动态语言语法太灵活了也是灾难的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号