4.2 句法结构
Ruby | Javascript | Go | Lua | |
---|---|---|---|---|
单行注释 | # |
// |
// |
-- |
块注释 | # code# code# code |
/* code */ |
/* code */ |
--[[ code --]] |
行尾分号 | 提倡省略 | 提倡保留 | 提倡省略 | 提倡省略 |
1. Ruby
程序起止代码块
解释性语言Ruby通常是按照源码顺序从上往下解释并执行, 不过Ruby还是提供了定义程序起止指定代码的功能, 这就是BEGIN
END
- BEGIN在任何语句之前执行, 如果有多个BEGIN块, 解释器按照遇见的先后顺序执行
- END在其他语句执行完后才会执行, 如果有多个END块, 解释器将按照遇见的顺序倒序执行
puts 3
BEGIN { puts 1 }
END { puts 5 }
BEGIN { puts 2 }
END { puts 4 }
将输出:
1
2
3
4
5
DATA对象
在ruby源代码中, 可以通过__END__
隔离出一个数据区域, 在代码中可以通过DATA.read
对其进行一次性读取.
嵌入文档注释
Ruby中除了上面表格中的快注释方式外, 还有一种用得不多的块注释方式:
=begin
这里面的
全部是
注释
=end
2. Javascript
行尾分号的争议
在Ruby, Go, Lua中, 只有试图在一行代码中书写多条语句, 才必须要分号分隔, 其他情况都建议省略分号, go fmt
还会自动去除行尾分号, 但是主流Javascript风格却提倡保留行尾分号, 一些资料支持javascript加分号的理由大致有这些:
- 如果源代码不加分号, 某些解释器会自动加上, 影响性能
- 缺乏分号可能影响某些javascript语句断句, 导致执行或者压缩异常
但目前越来越多的声音表示以上的理由并不靠谱, 所有如果要求Javascript代码加上分号, 我感觉应该只有以下2个出发点:
- 统一化: 保证团队代码一致
- 美观: 这个是风格问题, 仁者见仁, 不同的团队可能有不同的看法.