摘要:
计算平方和开方:计算3的平方:3 ** 2 #=> 9计算9的开方:9 ** (1.0/2) #=> 3计算n次幂与n次底计算3的3次幂:3 ** 3 #=> 27计算27的3次底:27 ** (1.0/3) #=> 3 阅读全文
随笔分类 - ruby
ruby中Hash的默认值小陷阱
2012-11-23 01:16 by java20130722, 242 阅读, 收藏,
摘要:
ruby中Hash可以提供一个默认值,我们可以使用new(object)和default=的这两种方式来设置ruby的默认值。但是有另外一种情况没有提到过,但是也能够修改默认值的方式。代码如下:class Kiwi def initialize(val) @val = val end def increase @val += 1 end
end hash = Hash.new(Kiwi.new(0))
hash[:x] #=> hash[:y].increase
hash[:x] #=> 可以看出,当第一次调用hash[:x]的时候,因为:x不存在,返回的是默认值... 阅读全文
ruby中Hash的自定义key
2012-11-22 11:35 by java20130722, 392 阅读, 收藏,
摘要:
Hash主要使用Key中的两个函数:hash和eql? hash返回的是对象的hash值,eql?是用来对比两个对象是不是相等。回顾下Hash这种数据结构,其首先需要一个hash函数返回一个整数,ruby中为Fixnum,然后根据Fixnum去使用eql?判断两个object是不是相同。所以,如果只是改变了hash函数,就仅仅会让具有相同实例的objecthash到同一个Fixnum,但是eql?不相等,也没有办法当成同一个key。同样,如果只修改eql?,相同字段的object可能都没有办法hash到同一个Fixnum,那么同样也没有办法当作同一个key。为了说明这两个函数的用处,我将分四种 阅读全文
查找ruby方法(以rails为例)
2012-11-17 01:47 by java20130722, 285 阅读, 收藏,
摘要:
我们知道ruby使用动态方法,还有一些mixin等功能,所以查找ruby的方法变得比一般的语言更困难,高富帅可以用textmate,屌丝没得。主要的想法是使用grep。grep [options] [patten] [files]在使用linux命令查找ruby方法时,更多的时候需要使用-rn的参数就足够,r表示recursive, n表式行号可以先clone一份最新版本的rails代码作为实验:git@github.com:rails/rails.git首先进入到rails/activereocrd目录下,我们知道ActiveRecord类提供了如find_by这个方法,我们就查找find_ 阅读全文
ruby单词单数复数相互转换
2012-10-31 20:24 by java20130722, 253 阅读, 收藏,
摘要:
require 'active_support/inflector' puts "user".pluralize #=> users
puts "repositories".singularize #=> repository 阅读全文
浅说ruby嵌套函数
2012-10-28 22:52 by java20130722, 220 阅读, 收藏,
摘要:
想到这个问题是因为看了网上的一个问题,大家可以先看看:http://pivotallabs.com/users/nick/blog/articles/302-ruby-quiz-a-trick-question我先从第二个问题开始讲起:下面的演示可以在irb中,也可以自己写一个main.rb之类的文件运行尝试(我的ruby是1.9.3)首先,开始看一个最简单的函数,def foo 1 end 我们知道ruby的顶级作用域是一个名叫main的Object,那么foo是在self为main中定义的,那它是存在于哪里的呢?增加两行代码puts private_methods.inc... 阅读全文