10 - metaprogramming with string evaluations.rb

来自「O Reilly Ruby Cookbook source code」· RB 代码 · 共 56 行

RB
56
字号
class Numeric [['add', '+'], ['subtract', '-'],   ['multiply', '*',], ['divide', '/']].each do |method, operator|    define_method("#{method}_2") do      method(operator).call(2)    end  endend#---class Numeric  [['add', '+'], ['subtract', '-'],    ['multiply', '*',], ['divide', '/']].each do |method, operator|    module_eval %{ def #{method}_2                     self #{operator} 2                   end }  endend4.add_2                                                  # => 610.divide_2                                              # => 5#---class String  def last(n)    self[-n, n]  endend"Here's a string.".last(7)               # => "string."class String  define_method('last') do |n|   self[-n, n]  endend"Here's a string.".last(7)               # => "string."class String  module_eval %{def last(n)                  self[-n, n]                end}end"Here's a string.".last(7)               # => "string."String.module_eval %{def last(n)                       self[-n, n]                     end}"Here's a string.".last(7)               # => "string."#---class String  eval %{def last(n)           self[-n, n]         end}end"Here's a string.".last(7)               # => "string."#---

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?