SongList容器

简介:
class  Song
  def initialize(name, artist, duration)
    @name=name
    @artist=artist
    @duration=duration
  end
  
  attr_accessor :name, :duration, :artist 
end

class  KaraokeSong < Song
  def initialize(name, artist, duration, lyrics)
    super(name, artist, duration)
    @lyrics=lyrics
  end
    
  attr_writer :lyrics 
  attr_reader :lyrics
    
end

class  SongList
  
  def initialize
    @songs= Array. new
  end
  
  def append(song)
    @songs.push(song)
    self
  end
  
  def delete_first
    @songs.shift
  end
  
  def delete_last
    @songs.pop
  end
  
  def [](index)
    @songs[index]
  end
end

require 'test/unit'
class  TestSongList < Test::Unit::TestCase
  def test_delete
    list = SongList. new
    s1 =Song. new ('title1','artist1',1)
    s2 =Song. new ('title2','artist2',2)
    s3 =Song. new ('title3','artist3',3)
    s4 =Song. new ('title4','artist4',4)
    
    list.append(s1).append(s2).append(s3).append(s4)
    
    assert_equal(s1, list[0])
    assert_equal(s3,list[2])
    assert_nil(list[9])

    assert_equal(s1,list.delete_first)
    assert_equal(s2,list.delete_first)
    assert_equal(s4,list.delete_last)
    assert_equal(s3,list.delete_last)
  end
end





本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/64010,如需转载请自行联系原作者
目录
相关文章
|
数据采集 存储 测试技术
Python生成随机数插件Faker的用法
Python生成随机数插件Faker的用法
832 0
|
数据可视化 应用服务中间件 数据安全/隐私保护
轻量应用服务器部署k3s,并搭建可视化高性能网关 apisix
k3s低资源占用集群,apisix 可视化高性能网关。小白教程
2536 0
|
存储 Java 应用服务中间件
Tomcat 支持 PFX 格式和 JKS 两种格式的证书区别
【10月更文挑战第2天】Tomcat 支持 PFX 格式和 JKS 两种格式的证书区别
1006 3
|
11月前
|
机器学习/深度学习 人工智能 数据可视化
保姆级教程:跟虚竹哥用Gemini-2.5-pro,一步搞定任何内容的思维导图,国内直接使用
通过以上两个实战案例,我们能直观地感受到Gemini-2.5-pro在信息梳理和知识可视化方面的强大能力。过去,将繁杂的文字资料转化为结构清晰的思维导图,不仅耗时耗力,更考验我们的归纳总结能力。而现在,借助AI的强大理解力,这个过程被简化为“一句话”或“一次上传”的功夫。
1255 4
|
人工智能 并行计算 异构计算
MT-TransformerEngine:国产训练核弹!FP8+算子融合黑科技,Transformer训练速度飙升300%
MT-TransformerEngine 是摩尔线程开源的高效训练与推理优化框架,专为 Transformer 模型设计,通过算子融合、并行加速等技术显著提升训练效率,支持 FP8 混合精度训练,适用于 BERT、GPT 等大型模型。
879 10
MT-TransformerEngine:国产训练核弹!FP8+算子融合黑科技,Transformer训练速度飙升300%
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
906 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
976 60
|
存储 运维 安全
Github Action:让静态网站实现定时发布
本文探讨了静态网站实现定时发布的解决方案,针对静态博客缺乏原生定时发布功能的问题,作者基于Zola工具构建的静态网站,最终选择通过GitHub Action实现定时发布。文章对比了几种实现方式,包括人力、自建服务及平台原生功能等,指出最理想的是利用平台能力但多数平台缺乏该功能。文中详细介绍了GitHub Action方案的原理、部署过程和使用流程,并分享了高级配置如推送通知。同时分析了方案的局限性,如时间颗粒度粗、设置繁琐等,并提出改进建议。总结中展望了未来优化方向,旨在提升静态网站维护体验。
329 0
|
消息中间件 Arthas Java
阿里云开发者2024年度技术热文盘点!
阿里云开发者2024年度技术热文盘点!
|
C语言
【C语言】原码、反码、补码详解 -《码上有道 ! 》
在计算机科学中,整数的表示方式有多种,包括原码、反码和补码。这些表示方式主要用于解决整数的二进制表示和计算问题。本文将详细介绍这三种表示方法,并通过示例来说明它们的原理和应用,特别是它们在C语言中的应用。
2927 5