ruby學習之Range

來源:互聯網
上載者:User

標籤:

一、 概述

Range在ruby中表示區間。表示方法“..”和“…”。前者表示閉合區間:

Range中的元素可以是數字、字串和自訂的區間對象

(1..10).each{|i| puts i }      #1 2 3 4 5 6 7 8 9 10

(1…10).each{|i| puts i}    #1 2 3 4 5 6 7 8 9

1.1 常用方法 

Range具有可枚舉能力,因此具有Enumerable的所有方法,詳細參考上一篇ruby之Enumerable

Range具有一些專屬的方法:

        rng.first  rng.begin返回第一個元素

        rng.last   rng.end返回最後一個元素

需要注意的是:不管(1..10) (1…10)第一個都是1  最後一個都是10,與遍曆出來的結果是不一樣的

puts "#{(1..10).first} :#{(1..10).last}"   #1 :10
puts "#{(1...10).first}:#{(1...10).last}"  #1:10

1.2自訂區間

自訂區間,只需要重寫兩個方法

        <=>用於自訂比較對象

         succ用於產生下一個元素

下面是一個簡單的樣本:

#!/usr/bin/ruby
#class of weekday
class WeekDay
    WEEKS=["sunday","monday","tuesday","wensday","thursday","friday","sartday"]
    attr_accessor :weekdayValue
    def initialize(value)
        if WEEKS.include?(value)
            @weekdayValue=value
        end
    end

    def to_num
        WEEKS.index(@weekdayValue) if @weekdayValue
    end

    def <=>(other)
        self.to_num<=>other.to_num
    end

    def succ
        raise "week error" if self.to_num() >7
        WeekDay.new(WEEKS[self.to_num()+1])
    end
    def WeekDay(value)
        WeekDay.new(value)
    end

    def to_s
        @weekdayValue
    end
end
mons=WeekDay.new("monday")
fris=WeekDay.new("friday")
puts mons.succ
puts "#{mons}:#{mons.to_num()}"
puts fris.succ
puts "#{fris}:#{fris.to_num()}"
ra= (mons..fris)
ra.each{|week|
    puts week
}

ruby學習之Range

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.