"a"和"b"在以下代码中表示什么,以及如何<=>工作?
list = [1,2,3,4,5]
list.sort { |a,b| b <=> a }
#=> [5,4,3,2,1]
Run Code Online (Sandbox Code Playgroud)
Emi*_*ily 11
的a和b表示一对项目.它可以是原始列表中的任意两个.在<=>通常被称为飞船操作.如果两个项相等则返回0,如果左边的那个较小则返回-1,如果右边的那个较小则返回1.
关于Ruby API文档中的太空飞船运营商的更多信息.这是Fixnum上的那个文档,因为那是你的例子中的内容,但你也可以查看Float,String等的定义.
更新:该sort函数期望它给出的块遵循与太空船操作符相同的行为.如果第一个参数a应该先排序,则应该返回-1; 如果第二个参数b应该先排序,则应返回1; 等等.因此,在list.sort { |a,b| a + b }您告诉排序第二个参数每次都更大的示例中,因为a + b该列表中的每个可能组合都大于1.所以你得到[5,3,1,4,2]的东西基本上是元素传递给块的顺序的工件,并且可能在Ruby实现中不稳定.
| 归档时间: |
|
| 查看次数: |
7372 次 |
| 最近记录: |