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

数组 – 为什么Dir.glob(“* .txt”).sort也需要.each?

发布时间:2020-12-16 19:12:59 所属栏目:百科 来源:网络整理
导读:Dir.glob(“*.txt”){| f | p f}打印文件名. Dir.glob(“*.txt”).sort {| f | p f}因ArgumentError而失败. Dir.glob(“*.txt”).sort.each {| f | p f}按字母顺序打印文件名. 为什么第二个失败?更好的是,为什么第一个工作,有或没有.each? Dir.glob和Dir.g
Dir.glob(“*.txt”){| f | p f}打印文件名.

Dir.glob(“*.txt”).sort {| f | p f}因ArgumentError而失败.

Dir.glob(“*.txt”).sort.each {| f | p f}按字母顺序打印文件名.

为什么第二个失败?更好的是,为什么第一个工作,有或没有.each?

> Dir.glob和Dir.glob.sort都是数组.
> Dir.glob.methods == Dir.glob.sort.methods.

(灵感来自Alphabetize results of Dir.glob.不是Dir.glob with sort issue的副本,因为“第三个”已经回答了那个人的问题.)

解决方法

另一个答案是正确的,但我认为有更深层次的解释.在方法调用之后有一个块,比如Dir.glob(“* .txt”){| f | p f},该块是该方法的(可选)参数.在Dir.glob的定义中,有一个运行块的yield语句.

链接方法时,如Dir.glob(“* .txt”).sort {| f | p f},该块成为sort方法的参数,而不是glob方法. sort也可以用一个块来定义一个比较,但是这个块在那个上下文中没有意义.

链接每个得到Dir.glob(“* .txt”).sort.each {| f | p f}使块成为每个方法的参数,它像glob一样使用它(为每个参数运行块).

(编辑:李大同)

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

    推荐文章
      热点阅读