静态语言和动态语言的优缺点
静态类型
-
优点:
- 编译时能够发现类型不匹配的错误
- 制定了相应的数据类型,那么编译时用的信息就更多,速度就更快了。
- 方便于我们看程序
-
缺点:
- 我们在编写程序时,要定义一个个的数据类型,太繁琐了,有时候单纯的为了指定程序类 型而去写。
- 太有局限性了,某个变量只能赋值一种数据类型。
动态类型
-
优点:
- 源码简洁。
- 边解释边执行
- 便于阅读
-
缺点:
- 不执行就检测不出错误
- 至多只能发现程序的语法错误
块的一些奇妙的用法
f = open(path)
begin
...
ensure
f.close
end
等价于
open(path) {|f|
...
}
如果给open传递了块,那么就在结束时文件就可以自动关闭。
Eumerable 来利用块
all? # 是否全部为真
all?{|x| ...} # 块是否对所有的元素都为真
any? # 是否有元素为真
any? # 块是否有元素为真
select # select=find_all
detect # find找到第一个元素
a = [1,2, 3,4]
a.detect{ |x| x%2 == 0}
# result
# 2
# 真假结果都有的
a = [1, 2, 3, 4]
a.partition {|x| x%2 == 0}
# result
# [[2, 4], [1, 3]]
sort
sort_by # 一次性将元素全部处理之后再排序
如果我想得到一个Enumerator对象
str.enum_for(:each_byte)
网友评论