• 在rails5.2里可以这样写:

    # ...
    module ClassMethods
      def search_by_game_name(name)
        puts "search_by_game_name(#{name})"
      end
    end
    # ...
    

    或者

    # ...
    class_methods do
      def search_by_game_name(name)
        puts "search_by_game_name(#{name})"
      end
    end
    # ...
    
  • ActiveSupport::Concern 小结 at 2018年08月17日

    如果只是混入实例方法的话, 普通的模块就够用了, 就算被引入的模块有多层include也没关系. 如果要考虑extend, 而且还涉及多个层次的模块, 这才是Concern的用武之地.

  • 原来如此, 感谢!!!

  • extract_options! 实现的疑问 at 2018年06月18日

    @liukun_lk @IChou 谢谢讲解 !!!

  • 透彻理解 Ruby 中的 return at 2018年05月08日

    请问有木有办法写成一句话呢? 不占用额外的方法名

  • 面试中的基础题小结 at 2018年05月03日

    大家都是成年人, 有自己的判断和选择.

    可以讨论问题, 不要 judge 别人, 谢谢.

  • 面试中的基础题小结 at 2018年04月28日

    上海

  • 笔记一则:

    class Gear
      # 车轮的抽象数据结构
      Wheel = Struct.new(:rim, :tire)
      # 整理输入数据
      def wheelify(data)
        data.collect do |per|
          Wheel.new(per[0], per[1])
        end
      end
    
      attr_reader :wheels
    
      def initialize(data)
        @wheels = wheelify data
      end
    
    
      def diameters
        wheels.collect { |wheel| diameter wheel }
      end
    
      # 计算车轮直径
      def diameter(wheel)
        wheel.rim + (wheel.tire * 2)
      end
    end
    
    
    input = [
        [622, 20],
        [622, 23],
        [559, 30],
        [559, 40],
    ]
    p Gear.new(input).diameters
    
    =begin
    此时的 Wheel 还没有必要单独抽出来, 用 Struct 是一个方便当下又面向未来的方法.
    
    
    依赖行为而不依赖数据: 使用存取器而不是直接操作实例变量.
    隐藏具体的数据结构: 将输入数据的格式处理单独封装, 将无语义的数据索引转化为有语义的属性值.
    =end
    
    
  • 透彻理解 Ruby 中的 return at 2018年04月25日

    不好意思, 我一开始对proc的上下文理解错了. 这样就明白了

    def func(array, &block)
      v = 1
      array.each do |ele|
        block.call(ele)
      end
    end
    
    fruits = ["banana", "apple", "pear"]
    v = 2
    func(fruits) do |f|
      return (p v) if f=="pear"
      # next if f=="pear"
      puts "i like" + f.capitalize
    end
    
    =begin
    i likeBanana
    i likeApple
    2
    main.rb:22:in `block in <main>': unexpected return (LocalJumpError)
    =end
    
  • IO 模式和 IO 多路复用 at 2018年04月23日

    之前读相关内容做的笔记 https://ruby-china.org/topics/34062