Ruby 学习笔记 (2)

1. Array#reject 方法遍历一个集合的每个元素,并把符合条件的元素删去。
例如去掉数组中的所有素数
nums = nums.reject do | num |
prime?(num)
end
puts nums

2. String#chomp 方法
str.chomp(separator=$/) => new_str
Returns a new +String+ with the given record separator removed from
the end of _str_ (if present). If +$/+ has not been changed from
the default Ruby record separator, then +chomp+ also removes
carriage return characters (that is it will remove +\n+, +\r+, and
+\r\n+).

"hello".chomp #=> "hello"
"hello\n".chomp #=> "hello"
"hello\r\n".chomp #=> "hello"
"hello\n\r".chomp #=> "hello\n"
"hello\r".chomp #=> "hello"
"hello \n there".chomp #=> "hello \n there"
"hello".chomp("llo") #=> "he"

3. 判断是否在命令行运行脚本
if $0 == __FILE__
check_usage
compare_inventory_files(ARGV[0], ARGV[1])
end
类似于Java类的main方法,在被其他类导入时不会运行其中的代码。

4. Enumerable#any? 方法查找一个集合中是否有满足条件的元素
irb(main):004:0> deposits = [1, 0, 10000]
irb(main):005:0> deposits.any? do | deposit |
irb(main):006:1* deposit > 9999
irb(main):007:1> end
=> true

5. 关于测试
这本书(Everyday Scripting with Ruby)的很多程序都是依循测试驱动开发的思想写出来的,测试单元中的方法通常有两种目的。
一种是direct test,需要测试那个函数就直接调用那个函数,传递的参数都是直接写出来的。
另一种是bootstrapping test,被测试函数的参数也是通过生成这些参数的函数生成的,即一个方法测试了多个对象。
Everyone finds their own balance between testing directly and testing indirectly. You will too.

6. Time#strftime 方法
t = Time.now
t.strftime("Printed on %m/%d/%Y") #=> "Printed on 04/09/2003"
t.strftime("at %I:%M%p") #=> "at 08:56AM"

你可能感兴趣的:(Ruby 学习笔记 (2))