#!/usr/bin/ruby -w
# -*- coding: UTF-8 -*-

# 👉 基础语法

# 上行注释它被称为`Shebang`。它告诉程序加载器使用什么命令来执行文件。因此，当您运行./myscript.rb时，它实际上会转换为/usr/local/bin/ruby -w ./myscript.rb
# 第二行添加 # -*- coding: UTF-8 -*-,告诉解释器使用utf-8来解析源码。

puts "你好，世界！";

## 空白字符
# 在 Ruby 代码中的空白字符，如空格和制表符一般会被忽略，除非当它们出现在字符串中时才不会被忽略。然而，有时候它们用于解释模棱两可的语句。当启用 -w 选项时，这种解释会产生警告。
# 例如：    a + b 被解释为 a+b （这是一个局部变量）
#          a  +b 被解释为 a(+b) （这是一个方法调用）

## 行尾
#Ruby 把分号和换行符解释为语句的结尾。但是，如果 Ruby 在行尾遇到运算符，比如 +、- 或反斜杠，它们表示一个语句的延续。

## Here Document
#"Here Document" 是指建立多行字符串。在 << 之后，您可以指定一个字符串或标识符来终止字符串，且当前行之后直到终止符为止的所有行是字符串的值。
#如果终止符用引号括起，引号的类型决定了面向行的字符串类型。请注意<< 和终止符之间必须没有空格。

# Here Document 1
print <<EOF
这是第一种方式创建here document 。
多行字符串。
EOF

# Here Document 2
print <<'EOF'; # 双引号和单引号都可以
这是第二种方式创建here document 。
多行字符串。
EOF

# Here Document 运行命令
print <<`EOC`
echo first line.
echo second line.
EOC

# Here Document 堆叠
print <<"foo", <<"bar";
this is foo doc line.
foo
this is bar doc line.
bar

# 在脚本前被调用
BEGIN {
    puts "begin code did called."
}

END {
    puts "end code did called."
}

=begin
这是注释。
可以写多行
=end