Ruby China
  • Topics
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • Sign Up
  • Sign In
shewer
@shewer
Member
NO. 36226 / 2018-10-17

[email protected]
4 Topics / 9 Replies
0 Followers
0 Following
0 Favorites
GitHub Public Repos
  • librime-lua-script 58

  • librime-predict 5

    librime plugin. predict next word.

  • librime-lua 5

    Extending RIME with Lua scripts

  • whaleliu 3

    rrime- 鯨魚舞倉頡 輸入法

  • Onion_Rime_Files 1

    電腦 Rime 洋蔥方案(注音、雙拼、拼音、形碼、行列30)

  • librime 1

    Rime Input Method Engine, the core library

  • trime 1

    同文安卓輸入法平臺3.x/Android-rime/Rime Input Method Engine for Android

  • lua_binding 0

  • fcitx5-android 0

    Fcitx5 input method framework and engines ported to Android

  • rime-ice 0

    Rime 配置:雾凇拼音 | 长期维护的简体词库

More on GitHub
  • Overview
  • Topics
  • Replies
  • Favorites
  • Following
  • Followers
  • ruby 转码问题,如何把一个 GBK 编码格式的乱码正确的读出来 at January 30, 2019

    试试开档时设定编码 这样读档问题较小 如果要算 bytesize "string".bytesize

    File.open('aa.log',encoding: 'GBK').each   {|line|     puts line,line.enocde('utf-8') }
    
    
    File.foreach('aa.log',encoding: 'GBK') {|line|  puts line}
    
  • 请教 继承 父类后 需要 覆盖 父类的 private method 如何做到 在不加上 private 宣告 ,仍然是 private method at November 27, 2018

    感谢 @qiumaoyuan 的答覆,当初的想法是:父类做抽象接口,子类:实现的 METHOD 用 PRIVATE METHOD,才有这个问题;是否有能够判定子类没有将该方法设定为 private 的警告。

  • 请教 继承 父类后 需要 覆盖 父类的 private method 如何做到 在不加上 private 宣告 ,仍然是 private method at November 22, 2018

    @bysxiang java 的 private 和 RUBY private 不同吧 父类的 private 子类是调用不到的,必须调用继承自父类的 public method,透过调用到 父类的 public method , 才可能调用到 private method

    而 ruby 在继承后 子类的 public method 是直接可以调用父类的 private method 的 从 子类的 private_methods 可以看到, 也就是说 子类 可以新增 public method 来调用 父类的 private method

    class A
       private 
        def a
            4
        end
    end
    class B
       def b
           a
       end
    end
    
    b=B.new
    b.b   #   4
    
    
  • 函数有几组不同的参数调用形式,怎么去匹配比较好呢? at November 22, 2018

    @miao 我想 你是想知道因为没有同名异式 方法 如何利用引用参数来 达到同名异式的效果吧

    参数引用优先顺序 是 一般数 hash block

    def test(*args)
        a,*b=args  
       p a
       p b 
        if block_given? 
              b.each { |i|  yield i }
         end 
    end 
    def test1(a,b,c,&block)
           p a , b ,c
          block.call()
    end 
    
    def test2(a,b,c)
      p a,b,c
      yield 
    end 
    
    test( 1,2,3,a: 1,b:2,c:3)   {|i|   p i }  # 传入引数 [1,2,3,{a:1,b:2,c:3} ]
    # a=1  b=[2,3,{a:1,b:2,c:3}]
    
    def test1(argv)
       a=argv[:a]
       b=argv[:b]
    end
    
    
    test1(a:1 , b:2 ,c:3)  # 此时   参数被当做 1 个 Hash
    
    
    
    
  • 请教 继承 父类后 需要 覆盖 父类的 private method 如何做到 在不加上 private 宣告 ,仍然是 private method at November 20, 2018

    @bysxiang @sanm1992 啊真的吗? 我是用 2.5.3 2.4 2.3 应该也是可以 以前 试过 ruby method 在 self 找不到 方法会向上找 实际上 并没有覆盖,而是 子类 也有同样名字的方法,的方法 参照到 子类的方法 如果用 undef 把子类的方法拿掉 当找不到方法就会向上去找

    比较特别的是 B 类找不到本身的 b 方法 呼叫 A 类 的 b 方法 , A 类 b 方法内的 c 却是 B 类的 c 方法

    这样讨论后,自己也有深一点的理解。

    class A
        def a 
             4
         end 
        def b
            a + c
        end 
        private 
        def c
            3
        end 
    end 
    
    class B < A
        private 
        def c
            50
        end 
    end 
    
    a=A.new
    a.b  #   a.a +a.b
    b=B.new
    b.b      使用 a.b  调用到 a.a 及b.c
    '''
    
    
    
  • 请教 继承 父类后 需要 覆盖 父类的 private method 如何做到 在不加上 private 宣告 ,仍然是 private method at November 17, 2018

    @pinewong
    刚才试了一下 inherited , 是在 subclass 建立时 执行,class block 内容是在 inherited 之后,这样就无法确认子类 宣告的 方法

    class Foo
      def self.inherited(subclass)
        puts "New subclass: #{subclass}"
      end
    end
    
    class Bar < Foo
        def a
              3
        end 
        puts "class #{self}"
    end
    
    class Baz < Bar
        puts "class #{self}"
        def a
              3
       end
    end
    
    #New subclass: Bar
    #class Bar
    #New subclass: Baz
    #class Baz
    
    
  • 请教 继承 父类后 需要 覆盖 父类的 private method 如何做到 在不加上 private 宣告 ,仍然是 private method at November 17, 2018

    @tuliang : 如果子类 重定义 initialize 且没有 super 时 又会被 pass 掉; 在想 能否在 建立 class 时就能检查

    利用 class method : private_instance_methods & public_instance_methods

    def initialize 好像就会自动调回 private_method 这个方法 不知道在那里?

  • 使用 extend 做装饰模式 ,有没有办法退回上一层 at November 07, 2018

    没有用,已经 extend 的 module 直接跳过 顺序不变 ( 和 module include 一样,已经载入的 module 不会再载入且顺序不变) 仍然是 C -> B -> A

  • 求解释, [a,b].max 比调用 max 函数快 at October 17, 2018
    def max(*args)
        args.max    # args == Array
    end
    max( 3,4,5,8,6)
    ``
    
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English