`
Hooopo
  • 浏览: 336047 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

notes

    博客分类:
  • API
阅读更多
---------------------------------------------------------- Array#compact
     array.compact     ->  an_array
------------------------------------------------------------------------
     Returns a copy of _self_ with all +nil+ elements removed.

        [ "a", nil, "b", nil, "c", nil ].compact
                          #=> [ "a", "b", "c" ]


irb default to auto complete:
irb(main):002:0> require'irb/completion'
=> true
irb(main):003:0> o = Object.new
=> #<Object:0x2ca4c8c>
irb(main):004:0> def o.ccc
irb(main):005:1> puts "ccc"
irb(main):006:1> end
=> nil
irb(main):007:0> o.c
o.ccc    o.class  o.clone
irb(main):007:0> o.c


get total days in a month

irb(main):019:0> d0 = Date.new(2009,12,1)
=> #<Date: 4910333/2,0,2299161>
irb(main):020:0> puts d0
2009-12-01
=> nil
irb(main):021:0> d1 = d0 >> 1
=> #<Date: 4910395/2,0,2299161>
irb(main):022:0> puts d1
2010-01-01
=> nil
irb(main):023:0> d2 = d1 - 1
=> #<Date: 4910393/2,0,2299161>
irb(main):024:0> puts d2
2009-12-31
=> nil
irb(main):025:0> d3 = d2.day
=> 31
irb(main):026:0> d4 = Date.new(2009,12,-1)
=> #<Date: 4910393/2,0,2299161>
irb(main):027:0> puts d4
2009-12-31
=> nil
irb(main):028:0> def days_of_month(year,month)
irb(main):029:1> (Date.new(year,12,-1) << 12 - month).day
irb(main):030:1> end
=> nil
irb(main):031:0> days_of_month(2004,2)
=> 29
irb(main):032:0> days_of_month(2003,2)
=> 28
irb(main):033:0>


sort array ascending except zero :
Hello, I need to sort
[1,4,2,0,8,9] to [1,2,4,8,9,0]
A simple ascending sort but with the zero values to the end
I really don't see how to do

1.override <=> on Fixnum(显然不是一个好的方法)
2.
a=[1,3,2,5,2,0,3,0,4,0,3]
max = a.max + 1
p a.sort_by{|x| x.zero? ? max : x}


3.
INF = 1.0 / 0.0
p a.sort_by {|x| x.zero? ? INF : x}

a.sort do |x,y| 
  case 
  when x == 0 then  1 
  when y == 0 then -1 
  else             
    x <=> y 
  end 
end


4.
tmp = a.partition{|x| x.nonzero? } 
p (tmp[0].sort + tmp[1])

5.
a.sort.sort_by{|n| n.zero? ? 1 : 0}

6.
tmp = a.sort.select{|x| x.nonzero? } 
p (tmp + Array.new((a.size - tmp.size),0))

7.delegate
require 'delegate'
require 'pp'

SFix = DelegateClass(Fixnum)

class SFix
  def <=> o
    num = __getobj__
    case
    when num == 0 then  1
    when o   == 0 then -1
    else num <=> o.__getobj__
    end
  end
end

# ======================================================

puts "Original Array"
x = [1,4,2,0,8,9]
# outputs:
# Original Array
# [1, 4, 2, 0, 8, 9]
pp x
puts

puts "Sorted Array"
# outputs:
# Sorted Array
# [1, 2, 4, 8, 9, 0]
pp x.sort_by {|i| SFix.new i}
puts


8.
require 'pp'


# You probably should put the following in it's own file
# and require it from here
# ======================================================
require 'delegate'

class CustomArray

  class MyFixnum < DelegateClass(Fixnum)

    def initialize(n)
      super(n)
    end

    def <=>(n)
      if self == 0
        return 1
      else
        if n == 0
          return -1
        else
          return  1 if self  > n
          return  0 if self == n
          return -1 if self  < n
        end
      end
    end

  end

  def initialize(my_array)
    @my_array = my_array.map{|n| MyFixnum.new(n)}
  end

  def sort
    return @my_array.sort.map{|n| n.to_i }
  end

end
# ======================================================

puts "Original Array"
x = [1,4,2,0,8,9]
# outputs:
# Original Array
# [1, 4, 2, 0, 8, 9]
pp x
puts

puts "Sorted Array"
# outputs:
# Sorted Array
# [1, 2, 4, 8, 9, 0]
pp CustomArray.new([1,4,2,0,8,9]).sort
puts



SimpleDelegate有什么用?
   require'delegate'
   class Stats
     def initialize
       @source = SimpleDelegator.new([])
     end
     
     def stats( records )
       @source.__setobj__(records)
       	
       "Elements:  #{@source.size}\n" +
       " Non-Nil:  #{@source.compact.size}\n" +
       "  Unique:  #{@source.uniq.size}\n"
     end
   end
   puts "SimpleDelegator".center(20,"-")
   s = Stats.new
   puts s.stats(%w{James Edward Gray II})
   puts
   puts s.stats([1, 2, 3, nil, 4, 5, 1, 2])
   
   class StatsNormal
     def initialize
       @source = []
     end
     
     def stats( records )
       @source = records
       	
       "Elements:  #{@source.size}\n" +
       " Non-Nil:  #{@source.compact.size}\n" +
       "  Unique:  #{@source.uniq.size}\n"
     end
   end
   puts "Normal".center(20,"-")
   s = StatsNormal.new
   puts s.stats(%w{James Edward Gray II})
   puts
   puts s.stats([1, 2, 3, nil, 4, 5, 1, 2])
   

待续..
0
0
分享到:
评论

相关推荐

    Notes SQL 8.5.1用于odbc连接Lotus Notes数据库

    Lotus Notes是一款强大的企业级协作应用软件,而SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言。在标题和描述中提到的“Notes SQL 8.5.1”是IBM提供的一款工具,它允许开发者通过ODBC...

    notes 8.5 新功能详解

    ### Notes 8.5 新功能详解 #### 一、读信更智能 在Notes 8.5中,读取电子邮件变得更加智能化。用户可以通过多种方式快速识别和管理邮件,提高工作效率。 **具体功能介绍:** - **按颜色区分发件人**:通过设置...

    notes定时发邮件

    在Lotus Notes(通常简称Notes)中,定时发送邮件是一项非常实用的功能,它允许用户预先设定邮件内容,并在特定的时间自动发送,无需手动操作。这个功能对于那些需要定期报告、提醒或者通知的情况非常有用。以下将...

    火热!!cfa一级2024最新notes下载

    "2024 notes"通常指的是针对2024年CFA考试的复习笔记或教材,这些材料通常由知名培训机构如Schweser等提供,精炼了官方学习材料,并加入了解题技巧和重点解析。SchweserNotes是CFA备考中广受欢迎的一套辅助资料,它...

    windows 手动安装Sticky Notes 便签.zip

    在不包含Sticky Notes 便签的操作系统中手动安装Sticky Notes 便签,windows server2016测试通过;包含x86及x64; 方法:1、新建 C:\Program Files\Sticky Notes 2、拷贝 en-US、slc.dll、StickyNotes.exe 至 C:\...

    Goodnotes手帐模版万年历

    Goodnotes手帐模版万年历是一款专为Goodnotes和Notability用户设计的资源,旨在提升用户的记事体验。这款模版集合包含了652页丰富的设计,覆盖了多种风格和用途,旨在帮助用户更好地规划日常生活、工作计划或是个人...

    如何改变LotusNotes 工作区字体的大小

    ### 如何改变LotusNotes工作区字体的大小 在日常工作中,我们经常需要根据个人习惯或视觉需求调整软件界面中的字体大小。对于使用LotusNotes的用户来说,更改工作区内的字体大小同样是一项实用的功能。本文将详细...

    Notes和Internet 口令的同步

    在IT环境中,Notes和Internet口令的同步是一项关键的配置,确保用户在使用Notes客户端和Web服务时能够方便地管理他们的登录凭证。以下是关于这个主题的详细解释: 首先,要实现Notes和Internet口令的同步,需要创建...

    Lotus Notes 自定义信头方法

    Lotus Notes,作为一款历史悠久且功能强大的邮件客户端,提供了自定义信头的方法,让用户的邮件更具特色。本文将详细介绍如何在Lotus Notes中定制专属的信头。 ### 一、理解Lotus Notes信头概念 在Lotus Notes中,...

    IBM LotusNotes JAVA库 NCSO.jar Notes.jar

    IBM LotusNotes是一款强大的企业级协同应用软件,它集成了电子邮件、日历、任务管理、文档共享、数据库等多种功能。在LotusNotes系统中,开发者可以利用其提供的API进行应用程序的开发,实现定制化的业务需求。这里...

    Notes客户端 用户惯用选项 配置端口

    在IT领域,Notes客户端是IBM Lotus Domino软件的一部分,用于访问和管理电子邮件、日历、任务和其他协作工具。当首次设置Notes客户端时,一个重要的步骤是配置端口,以便正确连接到服务器。本文将深入探讨Notes...

    2024年frm一级最新notes免费下载!

    2024年的FRM一级考试对于考生来说是一项重要的挑战,而Schweser Notes作为备考的重要参考资料,其更新版本的免费下载无疑为考生提供了宝贵的资源。 FRM一级考试主要涵盖金融市场与产品、定量分析、风险管理基础、...

    火热!2024年cfa三级notes免费下载!

    这次提供的免费下载资源包括了CFA三级的SchweserNotes和Quicksheet,这些都是备考的重要参考资料。 SchweserNotes是CFA备考过程中广泛使用的教材,由Kaplan Schweser出版,以其详尽的解释和实例而闻名。这套资料...

    lotus domino notes安装文档

    Lotus Domino Notes是一款由IBM开发的企业级协作软件,它包含了电子邮件、日历、任务管理、即时消息、数据库和应用程序开发等功能。本安装文档将详细阐述如何在操作系统环境中正确安装和配置Lotus Domino服务器以及...

    C-Primer-Plus-good-notes-.zip_Goodnotes window版_goodnotes window

    这个压缩包文件"**C-Primer-Plus-good-notes-.zip**"显然包含了一份针对该书的优质笔记,特别适合在Windows环境下使用Goodnotes阅读和学习。 **Goodnotes**是一款广受欢迎的数字笔记应用,尤其适用于Windows用户。...

    NOTES分类视图的生成

    NOTES分类视图的生成是LOTUS Notes应用开发中的一个重要环节,主要涉及到对视图(View)的定制和优化,以便更好地管理和展示数据。在NOTES中,视图是一种组织和检索数据库文档的方式,它允许用户按照特定的分类标准...

    Notes模板,适合于notes初学者!

    Notes模板详解 Notes是一款功能强大且灵活的协作软件,但许多用户并不了解Notes的模板机制和数据库结构,导致在使用Notes时遇到很多问题。今天,我们将详细介绍Notes模板的概念、创建模板的方法、模板的应用场景,...

    Notes与Office的接口

    本文主要探讨了如何使用Notes与Office之间的接口,特别是Word的邮件合并功能,来实现Notes数据库数据与Office程序的集成。这种集成能够帮助用户处理在Notes中难以完成的任务,例如标签打印、表格打印和修订显示。 1...

    火热!!cfa三级2025最新notes免费下载

    最新出的notes!免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费...

    NCSO.jar notes.jar pdfrender.jar JimiProClasses.zip

    标题中的"NCSO.jar"、"notes.jar"和"pdfrender.jar"以及"JimiProClasses.zip"都指向了Java相关的库文件和压缩包。这些文件在IT领域中扮演着重要角色,尤其对于开发和运行Java应用程序至关重要。下面将详细阐述这些...

Global site tag (gtag.js) - Google Analytics