• 如果条件比较复杂的话, 用 filter 应该会有更大的性能提升. 有个场景, terms 查询, 如果查询的列表长度超过1024, 用 query 的话就会报错了, 但 filter 就没影响.

  • 谢谢楼主分享 有个小问题:

    不再使用filtered

    改了后不是 filter context了,外面应该还要套个 bool > filter

  • #14楼 @drine Sorry,我之前的理解错误,这里的 if 里面的 | 并非无意义,它的优先级比 += 要高,于是

    sum += 1000 | value -= 3 if value >= 3
    

    等价于

    if value >= 3
      sum += (1000 | value -= 3)
    end
    

    | 操作符的意思是按位或,所以 sum 会得到一个不正确的值。

  • def score(dice)
      return 0 if dice == []
      sum = 0
      # 遍历 dice,使其变成一个 Hash,key 为 dice 里面的数值,value 为 出现的次数
      # result 只的是 block 返回的值
      rolls = dice.inject(Hash.new(0)) { |result, element| result[element] += 1; result; }
      rolls.each { |key, value| 
        # special condition for rolls of 1
        if key == 1
          # 下面这句可以等价为
          # if value >= 3
          #   sum += 1000
          #   value -= 3
          # end
          # 这里的 `|` 无意义,不想写 begin end
          sum += 1000 | value -= 3 if value >= 3
          sum += 100*value
          next
        end
        sum += 100*key | value -= 3 if value >= 3
        sum += 50*value if key == 5 && value > 0
      }
      return sum
    end
    

    btw:这段代码性能不错,可惜是错误的,如果有 6 个 1 的话,它只会计入 1300分。

  • #14楼 @luikore 笑了:-)

  • 兼容性。

    1.8.7-head :001 > s = "hello"
     => "hello" 
    1.8.7-head :002 > s[0]
     => 104 
    1.8.7-head :003 > ?h
     => 104
    
    2.1.3 :001 > s = "hello"
     => "hello" 
    2.1.3 :002 > s[0]
     => "h" 
    2.1.3 :003 > ?h
     => "h"
    
  • 求黑 JS 的一张图 at 2014年08月12日

    用不良的代码风格黑一个语言没说服力啊,Ruby 也可以写成这样。

  • 使用 ruby 开发 vim 插件 at 2014年07月04日

    #2楼 @pynix 那样你能调用 VIM 的 API 吗。。

  • #8楼 @kww 之所以选择随机的 pivot 只是为了避免 O(n^2) 的最差复杂度, 对于一般的序列, 选择固定的 pivot 反而要快一些, 毕竟 rand 也是需要时间的.

  • #14楼 @wppurking

    gem 'bootstrap-sass', '~> 3.2.0'
    gem 'autoprefixer-rails'
    

    我觉得应该不是项目本身的原因, 而是 RubyMine 可能缺什么配置了, 没有自动去索引所有 gem 里的 js 文件. 如同我在之前说的, 应用跑起来是没有问题的.