非常教程

Ruby 2.4参考手册

缩略 | Abbrev

Abbrev

计算给定的一组字符串的一组明确的缩写。

require 'abbrev'
require 'pp'

pp Abbrev.abbrev(['ruby'])
#=>  {"ruby"=>"ruby", "rub"=>"ruby", "ru"=>"ruby", "r"=>"ruby"}

pp Abbrev.abbrev(%w{ ruby rules })

产生:

{ "ruby"  =>  "ruby",
  "rub"   =>  "ruby",
  "rules" =>  "rules",
  "rule"  =>  "rules",
  "rul"   =>  "rules" }

它还提供了一个数组方法的扩展,Array#abbrev。

pp %w{ summer winter }.abbrev

产生:

{ "summer"  => "summer",
  "summe"   => "summer",
  "summ"    => "summer",
  "sum"     => "summer",
  "su"      => "summer",
  "s"       => "summer",
  "winter"  => "winter",
  "winte"   => "winter",
  "wint"    => "winter",
  "win"     => "winter",
  "wi"      => "winter",
  "w"       => "winter" }

公共类方法

abbrev(words,pattern = nil) 显示源文件

给定一组字符串,计算这些字符串的明确缩写集合,并返回一个散列,其中键是所有可能的缩写,并且值是完整的字符串。

因此,给定的words是“car”和“cone”,指向“car”的关键将是“ca”和“car”,而指向“cone”的键将是“co”,“con”和“cone”“ 。

require 'abbrev'

Abbrev.abbrev(%w{ car cone })
#=> {"ca"=>"car", "con"=>"cone", "co"=>"cone", "car"=>"car", "cone"=>"cone"}

可选pattern参数是一个模式或一个字符串。输出哈希中只包含匹配模式或以字符串开头的输入字符串。

Abbrev.abbrev(%w{car box cone crab}, /b/)
#=> {"box"=>"box", "bo"=>"box", "b"=>"box", "crab" => "crab"}

Abbrev.abbrev(%w{car box cone}, 'ca')
#=> {"car"=>"car", "ca"=>"car"}
# File lib/abbrev.rb, line 72
def abbrev(words, pattern = nil)
  table = {}
  seen = Hash.new(0)

  if pattern.is_a?(String)
    pattern = /\A#{Regexp.quote(pattern)}/  # regard as a prefix
  end

  words.each do |word|
    next if word.empty?
    word.size.downto(1) { |len|
      abbrev = word[0...len]

      next if pattern && pattern !~ abbrev

      case seen[abbrev] += 1
      when 1
        table[abbrev] = word
      when 2
        table.delete(abbrev)
      else
        break
      end
    }
  end

  words.each do |word|
    next if pattern && pattern !~ word

    table[word] = word
  end

  table
end

私有实例方法

abbrev(words,pattern = nil)显示源文件

给定一组字符串,计算这些字符串的明确缩写集合,并返回一个散列,其中键是所有可能的缩写,并且值是完整的字符串。

因此,给定的words是“car”和“cone”,指向“car”的键将是“ca”和“car”,而指向“cone”的键将是“co”,“con”和“cone”“ 。

require 'abbrev'

Abbrev.abbrev(%w{ car cone })
#=> {"ca"=>"car", "con"=>"cone", "co"=>"cone", "car"=>"car", "cone"=>"cone"}

可选pattern参数是一个模式或一个字符串。输出哈希中只包含匹配模式或以字符串开头的输入字符串。

Abbrev.abbrev(%w{car box cone crab}, /b/)
#=> {"box"=>"box", "bo"=>"box", "b"=>"box", "crab" => "crab"}

Abbrev.abbrev(%w{car box cone}, 'ca')
#=> {"car"=>"car", "ca"=>"car"}
# File lib/abbrev.rb, line 72
def abbrev(words, pattern = nil)
  table = {}
  seen = Hash.new(0)

  if pattern.is_a?(String)
    pattern = /\A#{Regexp.quote(pattern)}/  # regard as a prefix
  end

  words.each do |word|
    next if word.empty?
    word.size.downto(1) { |len|
      abbrev = word[0...len]

      next if pattern && pattern !~ abbrev

      case seen[abbrev] += 1
      when 1
        table[abbrev] = word
      when 2
        table.delete(abbrev)
      else
        break
      end
    }
  end

  words.each do |word|
    next if pattern && pattern !~ word

    table[word] = word
  end

  table
end

缩略 | Abbrev相关

Ruby 2.4

Ruby 是一种面向对象、命令式、函数式、动态的通用编程语言,是世界上最优美而巧妙的语言。

主页 https://www.ruby-lang.org/
源码 https://github.com/ruby/ruby
版本 2.4
发布版本 2.4.1

Ruby 2.4目录

1.缩略 | Abbrev
2.ARGF
3.数组 | Array
4.Base64
5.基本对象 | BasicObject
6.基准测试 | Benchmark
7.BigDecimal
8.绑定 | Binding
9.CGI
10.类 | Class
11.比较 | Comparable
12.负责 | Complex
13.计算续体 | Continuation
14.覆盖 | Coverage
15.CSV
16.日期 | Date
17.日期时间 | DateTime
18.DBM
19.代理 | Delegator
20.摘要 | Digest
21.Dir
22.DRb
23.编码 | Encoding
24.枚举 | Enumerable
25.枚举 | Enumerator
26.ENV
27.ERB
28.错误 | Errors
29.Etc
30.期望值 | Exception
31.错误类 | FalseClass
32.Fiber
33.Fiddle
34.文件 | File
35.文件实用程序 | FileUtils
36.查找 | Find
37.浮点 | Float
38.Forwardable
39.GC
40.GDBM
41.GetoptLong
42.Hash
43.Integer
44.IO
45.IPAddr
46.JSON
47.Kernel
48.语言 | 3Language
49.记录 | Logger
50.编排 | Marshal
51.MatchData
52.数学 | Math
53.矩阵 | Matrix
54.方法 | Method
55.模型 | Module
56.监控 | Monitor
57. 互斥 | Mutex
58.Net
59.Net::FTP
60.Net::HTTP
61.Net::IMAP
62.Net::SMTP
63.NilClass
64.数字 | Numeric
65.对象 | Object
66.ObjectSpace
67.Observable
68.Open3
69.OpenSSL
70.OpenStruct
71.OpenURI
72.OptionParser
73.路径名 | Pathname
74.完整输出 | PrettyPrint
75.Prime
76.Proc
77.过程 | Process
78.PStore
79.PTY
80.队列 | Queue
81.随机 | Random
82.范围 | Range
83.合理的 | Rational
84.Readline
85.Regexp
86.Resolv
87.Ripper
88.RubyVM
89.Scanf
90.SDBM
91.SecureRandom
92.Set
93.Shell
94.信号 | Signal
95.Singleton
96.套接字 | Socket
97.字符串 | String
98.StringIO
99.StringScanner
100.结构 | Struct