Chapter 1a: Ruby as a Computer Language
1. Basics
1.1 取Array和String的一部分
str = "abcd"
str[1..-1] # => 'bcd'
arr = [ele0, ele1, ele2, ele3]
arr[1..3] # => [ele1, ele2, ele3]1.2 Tenary 用于正反两种情况下的不同值
value = condition ? x : y # value要么是 x 要么是 y
if ... else ... 也可以覆盖所有情况
而 if 或者 if elsif 则未必,因为他们只注明了某些情况1.3 *args_arr *args_arr代表把传入的多个变量打包进args_arr这个Array
*args_arr *args_arr代表把传入的多个变量打包进args_arr这个Array1.4 Block和Proc
1.5 命名规范
1.6 用Range.each的情况
Range.each的情况2. Block
3. Enumerators / 循环
3.1 arr.each并不会对block的结果做什么处理,所以需要自己处理赋值等操作
arr.each并不会对block的结果做什么处理,所以需要自己处理赋值等操作3.2 其他的循环,会根据每一个元素通过block(就像是通过一个funnel)的结果来整合,比如变换 / 筛选 / 聚合
3.3 当我们只需要处理array的一部分,并且我们知道idx的范围时,更适合用idx的range来做each
idx的范围时,更适合用idx的range来做each4. Reference (函数内外的沟通)
4.1 函数计算完之后,最常见的与外面沟通的方式就是通过返回值 return
return4.2 Ruby的函数传的总是copy / value
4.4 在新建一个Array或者Hash时, 如果每个元素是collection (比如Array of Arrays), 那么必须要通过block来初始化。否则每个元素都是同一个reference,改一个就会改所有。
Array或者Hash时, 如果每个元素是collection (比如Array of Arrays), 那么必须要通过block来初始化。否则每个元素都是同一个reference,改一个就会改所有。Last updated