Ruby China
  • Topics
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • Sign Up
  • Sign In
zputee
@zputee
Member
NO. 4350 / 2012-11-04

[email protected]
武汉
12 Topics / 62 Replies
0 Followers
0 Following
12 Favorites
No GitHub.
  • Overview
  • Topics
  • Replies
  • Favorites
  • Following
  • Followers
  • 趣味图片:He uses WIFI at April 29, 2013

    呵呵

  • 关于类名常量 at April 29, 2013

    #10 楼 @chenge 🌻

  • 关于类名常量 at April 29, 2013

    @baxiaopeng 借花献佛 🌻

    Class.superclass == Module; 
    Module.superclass==Object; 
    # (mixin Kernel)
    Object.superclass == BasicObject;                      
    BasicObject.superclass == nil
    Kernel.class == Module
    BasicObject.class = Class
    Module.class == Class
    Object.class == Class                     
    Class.class == Class
    

    以上错综复杂的关系,我给它起了个名字:Ruby 云! ,Ruby 云孕育了 Ruby 世界!

    先有鸡还是先有蛋? 😄 Ask:Matz!

    《元编程》有相似的图,最近有点心得,准备写一篇,到时请大家小拍。

    @chenge

  • 关于类名常量 at April 29, 2013

    类是对像,对象不是类。

    class MyClass;end obj=MyClass.new 请来个 obj 中有 new 吗,能添加 instance_method,然后 new 一个对象吗? (obj.clone,obj.dup 不算,在 Javascript 中,基本可以说 对象是类,类是对象 )

  • 关于类名常量 at April 29, 2013

    #3 楼 @baxiaopeng @chenge 😄

    class MyClass;end
    obj=MyClass.new
    
    MyClass.instance_methods.length
    MyClass.methods.length
    obj.methods.length
    
    MyClass.methods
    Module.instance_methods(false)
    Class.instance_methods(false)
    
    ```
    
  • 关于类名常量 at April 29, 2013

    #1 楼 @baxiaopeng ruby 毕竟不是 JavaScript。类是对象。不是普通对象。‘ 对象中不能定义常量,对象不能 new,对象没有 Module 中 instance_methods

  • Ruby 冲击波,谁还可以做个更牛的出来 at April 27, 2013

    #30 楼 @luikore 👍 👍 👍

  • Ruby 冲击波,谁还可以做个更牛的出来 at April 26, 2013

    #14 楼 @chenge “铁打的营盘流水的兵..”可能指 wave.unshift(1) 不改变 wave.object_id,

    wave = []
    wave.object_id    
    wave.unshift(1)
    wave.unshift(1)
    wave.object_id      #object_id 没变
    
    wave=[1]
    wave.object_id      #object_id 变了 
    
  • Ruby 冲击波,谁还可以做个更牛的出来 at April 26, 2013

    #24 楼 @luikore 👍

    x = 0
    y = 0
    loop do
      dot = '-' * ((1 + Math.sin(x += 0.018)) * ((1 + Math.sin(y += 0.15))) * 20)
      puts dot.center 80
      sleep 0.01
    end
    
  • Ruby 冲击波,谁还可以做个更牛的出来 at April 26, 2013

    #4 楼 @luikore 借花献佛 🌻

    x = 0
    loop do
      space = ' ' * (30-((1+Math.sin(x+=0.15))*15))
      dot = '-' * ((1+Math.sin(x)) * 15) *2
      puts space + dot
      sleep 0.01
    end
    
    
  • 聊聊 Ruby 中的 block, proc 和 lambda at April 26, 2013

    #37 楼 @kayakjiang 再来个嵌入

    class C
      @name = "zhong3"
    end
    
    @name="li4"
    
    ll = ->(word){p "#{word},#{@name}"}
    C.singleton_class.send(:define_method,:say ,&ll)
    
    C.say("hi")
    #"hi,zhong3"
    
  • 聊聊 Ruby 中的 block, proc 和 lambda at April 26, 2013

    #35 楼 @kayakjiang ,代码块加引号就是字符串 😄 ,来一个真的代码块嵌入:

    class C
      def initialize(name)
        @name = name
      end
    end
    cc = C.new("zhong 3")
    
    @name = "li 4"
    cc.instance_eval{
      def hi
        p @name          #调用嵌入对象cc中的实例变量 @name
      end
    }
    cc.methods(false)   #检查嵌入的代码
    #=>[:hi]    
    cc.hi              #调用嵌入的代码
    #=>"zhong 3"
    
  • 一个网站的 IDEA at April 26, 2013

    好想法 👍

  • 聊聊 Ruby 中的 block, proc 和 lambda at April 26, 2013

    #26 楼 @ericguo #19 楼 @goinaction “嵌入代码”只是便于理解。 block 更接近 method,传入的是 类似 Java 中的 “函数指针”。函数可以有调用参数。

    #32 楼例子中的”张三“可以通过块参数进入块中,这时用带参数的块调用。

    def m
      name = "张三"     
      yield(name)   #调用传入参数
    end
    name = "李四"                  #这次和李四没有关系了。
    m{|name|p "hi, #{name}"}   #name 是参数
    #=>"hi, 张三“
    
  • 聊聊 Ruby 中的 block, proc 和 lambda at April 26, 2013

    不绑定变量,嵌入代码:

    def m(mimic) 
      name="zhang 3"
      instance_eval(mimic) 
    end 
    name = "li 4"
    m %{p name}
    #=>"zhang 3"
    
  • 聊聊 Ruby 中的 block, proc 和 lambda at April 26, 2013

    #26 楼 @ericguo #19 楼 @goinaction

    我一直的笨办法就是记住:block 就是一段代码,call 的时候就是当前位置嵌入了代码;lambda 相当于一个方法,call 的时候就是方法调用

    形象、好记忆。加一句“block 就是一段 绑定了当前作用域变量的代码,call 的时候就在当前位置嵌入了代码”,就更完整了。

    def m
      name = "张三"   
      yield              #这里和“张三”没有关系
    end
    
    m{p "hi, #{name}"}
    #NameError: undefined local variable or method `name' for main:Object
    name = "李四"        #当前域生成了name变量
    m{p "hi, #{name}"}   #这时,name绑定了   ----(1)
    #=>"hi 李四"
    name = "王 二"
    p1 = lambda{p "hi, #{name}"}    #这时name绑定了, 速度比(1)慢
    m(&p1)  
    #=>"hi 王二"
    

    m{p "hi, #{name}"} 时,生成了内部 Proc 的对象。

    block 不是对象,可以转换成 Proc 对象,对象可以传递。

    Proc 的对象 和 Method 的对象 可以相互转换。http://ruby-china.org/topics/10470

  • 动态添加对象的方法 ( eigenclass --- 1 ) at April 25, 2013

    #3 楼 @skandhas 很早就接触 ruby,一直没有认真 😔

  • 反思” 题目太大了,hold 不住 “ at April 25, 2013

    #7 楼 @jasl 谢谢分享喜感网,不错

  • 动态添加对象的方法 ( eigenclass --- 1 ) at April 24, 2013

    #1 楼 @lgn21st谢谢,本人也刚开始认真学,请多指教。gravatar 上不了呀

  • 反思” 题目太大了,hold 不住 “ at April 24, 2013

    #3 楼 @luikore If it walks like a duck, quacks like a duck, then we can eat 😄 it as a duck...

  • ruby 的 Block,Proc,Lambda ---1 at April 24, 2013

    #1 楼 @chenge 多谢,已改正

  • RubyConfChina 2012 新浪 SAE Ruby 平台激活码和七牛云存储现金券 at November 25, 2012

    zputee#gmail.com 感谢

  • 我写的论坛软件现已开源:Rabel - PB2 on Rails at November 04, 2012

    学习了,谢谢

  • 利用 OCR 解析,京东商品价格 at November 04, 2012

     thanks

  • Prev
  • 1
  • 2
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English