`
iandaicsu
  • 浏览: 52075 次
社区版块
存档分类
最新评论
文章列表
  Invoking a Method on An Object first = text.index(pattern) 这段代码把pattern变量传递给index方法,index方法属于一个存储在text变量中的对象,返回值被存储到变量first中。     单键方法 o = "message" # 在字符串对象上定义它独有的方法 def o.printme puts self end o.printme  Math.sin, File.delete这样的类方法,实际上是单键方法。Math是一个常量,它引用一个moduel对象 ...

Ruby中的inject

    博客分类:
  • Ruby
结论:     [1, 2, 3, 4].inject(0) { |result, element| result + element } # => 10       inject带有一个参数和block。block中的两个参数是有含义的。第一个参数reslut在inject第一次执行block时把inject带的参数付值给它,element就是数组中的元素,该例中inject一共执行4次block,每次执行block完后,最后语句的结果再付值给result,如此循环,直到遍历数组中所有元素。      [1, 2, 3, 4].inject{ |resul ...

Ruby中的闭包

    博客分类:
  • Ruby
闭包的一个重要特征是:过程(方法)内部定义的变量,即使在方法调用完成以后,仍然可以继续引用到。     def method(n) puts "n=#{n}"; #测试用 return proc{|i| n +=i } #关键:proc是一个过程对象,只能由"委托"用call来调用,这里在过程内部引用了参数变量n,将会在多次call该过程后,保留对n的引用,形成闭包! end aDelegate = method(0);#可以理解为c#中的委托,同时该语句会初始化n为0 puts aDelegate.call(1); ...
==,===,eql?,equal? 都有些啥区别       Equality (==, eql?, equal?)     ==  普通的相等,不对object_id是否相等进行检查 eql? 和 ==  是相同的, equal?则是要对object_id是否相等进行检查   “test” == "test"  #=> return true,因为两者的值相等 “test"equal?("test") #=> return false  因为两者的值虽然相等,但两者的object_id不相等     ...
结论: 赋值 非 拷贝   Ruby1.9.3   例1     a = [1,2,3] b = a             #只是引用,不是拷贝 a << 4 puts a #=> [1,2,3,4] puts b #=> [1,2,3,4]     例2     a = [1,2,3] b = a              b << 4 puts a #=> [1,2,3,4] puts b #=> [1,2,3,4]   例3   a = [1,2,3] b = a b = []  #=& ...
From the ruby programming language.Blocks and Variable ScopeBlocks define a new variable scope: variables created within a block exist only within that block and are undefined outside of the block.   Be cautious, however; the local variables in a method are available to any blocks within that meth ...
Global site tag (gtag.js) - Google Analytics