• def print_half_diamond(lines, width: 5)
      cycle = width * 2 - 2
      return lines.times { puts '*' } if cycle.zero?
      lines.times do |line|
        index = line % cycle + 1
        count = index <= width ? index : width * 2 - index
        puts '*' * count
      end
    end
    
  • 新年快乐,祝大家万事如意🎈 🎈

  • 不行

  • 实现不了的,没办法统一添加,只能为每一个需要修改核心方法的类添加 using 语句。

    Refinements 作用域只有顶级、Module 和 Class,且遇到 end 就停止了,不能用在 Method 上。

    You may activate refinements at top-level, and inside classes and modules. You may not activate refinements in method scope. Refinements are activated until the end of the current class or module definition, or until the end of the current file if used at the top-level.

  • 新人求助:ArgumentError at 2019年01月06日

    写全了就是

    find_room_in_dungeon(@player.location).connections([direction])

    这应该不是你的本意了吧

  • 新人求助:ArgumentError at 2019年01月06日

    是方法内部发生了异常,

    find_room_in_dungeon(@player.location).connections [direction]

    这里 [] 前面多了个空格,导致当成参数了

  • asset 图片显示问题 at 2018年12月03日
  • 关于类变量的疑问 at 2018年12月02日

    给你补上例子

    class A
      def initialize
        @path=''
      end
      def path
        @path
      end
    end
    class B < A
      def initialize
        @path='b'
      end
    end
    class C < A
      def initialize
        @path='c'
      end
    end
    
    obj= B.new
    puts obj.path
    
  • 关于类变量的疑问 at 2018年12月02日

    像你这种情况是不想公用属性啊,那应该用实例变量而不是类变量。

    但要记得实例变量区分类和他的单例类两个作用域,因此要把初始化的操作移到构造函数中,像上面在类中初始化会得不到你期望的效果

  • 关于类变量的疑问 at 2018年12月01日

    首先这段代码最后的结果就是 c,最简单的,开一个 irb 把代码都粘贴上去验证一下就行了。你上面提到的 Nginx 结果没有什么问题,至于 rails s 结果错误,肯定是因为别的原因(我猜想你的 B, C 都是自动加载类,然后实际上验证结果时 C 没有加载或者 B 在 C 之后加载的)。

    至于结果为什么是 c,是因为 Ruby 的类变量会和所有子类以及他们的单例类共享的,即在上述的所有作用域中 @@path 的内存指向都是一样的。

    class A
      @@path=''
    
      def path_object_id
        @@path.object_id
      end
    
      def self.path_object_id
        @@path.object_id
      end
    
      puts path_object_id # => 70139278257540
      puts self.new.path_object_id # => 70139278257540
    end
    
    class B < A
      puts @@path.object_id # => 70139278257540
      puts self.new.path_object_id # => 70139278257540
    end
    
    class C < A
      puts @@path.object_id # => 70139278257540
    end