Ruby对象数组的排序

作者刚刚接触Ruby,因之前总认为脚本语言语法不规范,对脚本语言有些偏见,如不是项目需要并不会去学习PYTHON、RUBY等语言。现在项目中需要实现对象数组排序的任务,对于昨天开始看ruby的我来说压力山大啊!【汗】

但是经过一番查询资料,终于初步实现了自己想要的结果,现将自己做的测试程序记录下来,以记念在ruby的道路上打的第一个小怪!代码如下:

 1 #!/usr/bin/ruby
 2
 3 class Location
 4     attr_accessor :longitude
 5     attr_accessor :latitude
 6     def initialize(lo,la)
 7         @longitude, @latitude = lo,la
 8     end
 9 end
10
11 class OBD
12     attr_accessor :gps
13     attr_accessor :loc
14     def initialize(g,l)
15         @gps = g
16         @loc = l
17     end
18
19 end
20
21 loc = Location.new(10,20)
22 obd = OBD.new(1,loc)
23 loc2 = Location.new(20,30)
24 obd2 = OBD.new(5,loc2)
25 loc3 = Location.new(40,50)
26 obd3 = OBD.new(2,loc3)
27
28 @obds = []
29 @obds[0] = obd
30 @obds[1] = obd2
31 @obds[2] = obd3
32
33
34 @obds.sort! {|a,b| a.gps <=> b.gps}#注意此处的'!',如果没有'!',则原数组不会被改变,建议去掉叹号后试试效果
35 puts obd.gps
36 puts obd.loc.longitude
37 puts obd.loc.latitude
38 puts "#{@obds[0].gps},#{@obds[0].loc.longitude},#{@obds[0].loc.latitude}"
39 puts "#{@obds[1].gps},#{@obds[1].loc.longitude},#{@obds[1].loc.latitude}"
40 puts "#{@obds[2].gps},#{@obds[2].loc.longitude},#{@obds[2].loc.latitude}"

程序运行结果:

希望对大家有帮助吧!

[注]:本文为作者原创,转载请标明出处

转载于:https://www.cnblogs.com/myWAY2/p/5141645.html

Ruby中对象数组排序相关推荐

  1. ruby 数组自定义排序_在Ruby中对数组排序

    ruby 数组自定义排序 Sorting was a preoccupation for computer scientists from early on. There were many algo ...

  2. ruby 新建对象_Ruby中的面向对象编程

    ruby 新建对象 Before getting into understanding how Object-oriented programming is implemented in Ruby, ...

  3. Ruby中的类与对象(一)

    一些约定: 类名首字母大写 方法名首字母小写 end在Ruby中无处不在. 声明类 class BookInStock end 创建类对象 a_book = BookInStock.new anoth ...

  4. 如何在Ruby中使用数组方法

    介绍 (Introduction) Arrays let you represent lists of data in your programs. Once you have data in an ...

  5. ruby 新建对象_Ruby面向对象编程的简介

    ruby 新建对象 by Saul Costa 由Saul Costa Object-oriented programming (OOP) is a programming paradigm orga ...

  6. C#对象数组排序方法

    一个排序的类,用了几种方式实现的. using System;    namespace DataStruct {    public class Sorter    { /// <summar ...

  7. Ruby中的设计模式

    继续 上 节讲述过的Singleton . Proxy 及 Iterator各模式,本节再来考察几个别的设计模式.下面按顺序来考察 Prototype . Template Method 和 Obse ...

  8. Ruby中的设计模式——《松本行弘的程序世界》

    < 设计模式 > 一书是用C++ 和 Smalltalk 介绍模式实例的.看了那些例子,大家都会感觉到,绝大多数的模式用 Smalltalk 实现起来非常简单.这是为什么呢? 因为Smal ...

  9. map(&:name)在Ruby中是什么意思?

    我在RailsCast中找到了以下代码: def tag_names@tag_names || tags.map(&:name).join(' ') end 什么是(&:name)在m ...

最新文章

  1. linux新建文件权限问题
  2. 【转】data和attr的用法与区别
  3. Spark SQL读数据库时不支持某些数据类型的问题(Timestamp with local Timezone)
  4. LRU最近最少使用缓存集合
  5. 模板:广义二项式反演/广义容斥(组合数学)
  6. python基础小白题2
  7. javascript学习笔记之document对象、表单及表单元素、脚本化cookie
  8. java的头怎么写_JAVA对象布局之对象头(Object Header)
  9. 图灵、冯诺依曼谁才配得上计算机之父?
  10. dns服务器优化 360,360DNS优化
  11. arduino定时器控制舵机_Arduino通过串口控制舵机角度
  12. 《蔡康永的说话之道》书摘
  13. KNN(K临近算法)的简单模拟实现
  14. 手机端微信发朋友圈功能测试点总结
  15. 编码技巧——全局异常捕获统一的返回体业务异常
  16. svn提交怎么全选_SVN 一次性提交多个目录中文件
  17. dnf跨6服务器维护,地下城与勇士DNF2018全跨区表一览
  18. VMWare 移动Linux CentOS 7虚拟机后连不上网怎么办
  19. R语言_电信客户流失数据分析
  20. GX、LS型螺旋输送机结构新颖 噪声低

热门文章

  1. 熟练掌握Word2003中的突出显示功能
  2. 《APUE》读书笔记—第十三章守护进程
  3. 一个好的设计应当具备哪些要素
  4. 【Deep Learning】MLP识别手写 MNIST数字集
  5. Linux下NFS(网络文件系统)的建立与配置方法
  6. Get Started with Lightning Knowledge
  7. Map .NET Concepts to the Lightning Platform——list,set,map
  8. java的知识点33——死锁及解决方案
  9. JavaScript 技术篇-JSON字符串在线快速格式化查看实例演示,json.cn网址格式化json字符串
  10. C++——类访问修饰符