• #15楼 @phantom hhhhhhhhhh 原来是会换工作的,怪不得用平均值正确率会突然跌的没法儿看。那我就试试定期重置咯 key = rz4mwn {"status":0,"message":"OK","prediction_count":"1000","score":"10229"}

    对了,播客的名字错了呀…… 友的聊听友表示不能忍。🌚

  • 纠正一下 Extend 那个例子中的一个问题:例子中最终的输出应该是 # This class is of type: Class

    由于在类中运行 extend Log 使得 Log 中的方法添加给了 TestClass 这个类。所以在 self.class 的值应该是 TestClass 的类。而在 Ruby 中,我们定义的类都是 Class 的一个实例。所以:

    TestClass.new.class #=> TestClass
    TestClass.class #=> Class
    

    这个问题在英文原链评论区里也有人提到了。另外,还有一个错误。

    并非使用 Extend 时就是类方法

    以下是 $ Ri extend 返回的结果

    === Implementation from Object
    ------------------------------------------------------------------------------
      obj.extend(module, ...)    -> obj
    
    ------------------------------------------------------------------------------
    
    Adds to obj the instance methods from each module given as a parameter.
    
      module Mod
        def hello
          "Hello from Mod.\n"
        end
      end
    
      class Klass
        def hello
          "Hello from Klass.\n"
        end
      end
    
      k = Klass.new
      k.hello         #=> "Hello from Klass.\n"
      k.extend(Mod)   #=> #<Klass:0x401b3bc8>
      k.hello         #=> "Hello from Mod.\n"
    

    这里的说明十分清楚,这是一个实例方法。调用者和返回者都是这个实例,所以当我尝试像下面这样定义时:

    class TestClass
       puts extend(Log) #=> TestClass
    end
    

    返回的结果是 TestClass

    因此我猜想,我们在类定义中使用的 extend Log 实际是一种简写,实际运行的是self.extend(Log)

    结论是,并不是说使用 Extend 时就是类方法。而是需要注意到我们实际使用的是一种简写,由于是 self(即类本身) 调用了 Extend 这个方法,才使得添加模块中的方法被设定成了类方法。

    所以如果希望避免这一误会,可以在类定义中使用 self.extend(module, ...) 而非 extend(module, ...)

  • Ruby 服务器对比 at 2015年05月17日

    "still, the author provides no warranty and says that usage is at own risk." 这一句应该可以翻译为:“当然,作者也并不做任何担保,并表示不同应用环境下有其相应的风险。”

  • 最需要的时候永远就是入手的最佳时机。

  • 当你自己觉得要用的时候。天天想着什么时候买才最浪费时间。

  • #1楼 @swordray 这样啊,谢谢。