基础语法
编码
默认情况下, Z1h 源码文件以utf-8编码 允许在代码中使用任意字符集, 例如英文、中文、日文、维语等
Z1h的语法兼容大部分Golang、Python、JavaScript和Java的语法, 有上述编程语言经验的开发者可以尝试直接进行编码
标记
- 代码语句由多个"标记"组成, 可以是关键字, 标识符, 常量, 字符串, 符号
- 程序中可能会使用到这些分隔符:括号
()
, 中括号[]
和大括号{}
- 程序中可能会使用到这些标点符号:
.
,
;
:
?
!
*
^
'
"
等
以下Z1h语句由 6 个标记组成
print('版本' + VERSION)
6个标记分别是(每行一个):
1. print
2. (
3. '版本'
4. +
5. VERSION
6. )
行分隔符
分号 ;
明确表示一行语句的结束. 但与此同时, Z1h的编译器也支持大多数场景下智能的自动分行
如果你打算将多个语句写在同一行, 则必须使用 ;
人为区分
以下为两个语句:
print("Hello")
print("World")
或
print("Hello"); print("World")
标识符
标识符用来命名变量、类型等程序实体. 一个标识符实际上就是一个或是多个字符(英文、数字、中文或其它语言字符、特殊符号)组成的连续字符串, 第一个字符不能是数字. 且对大小写敏感.
以下是有效的标识符:
zwr
Zwr
z_w_r
$zwr
z1h语言
...
以下是无效的标识符:
1ab(以数字开头)
if(不能和关键字相同)
a+b(不允许包含运算符)
保留字
保留字即关键字, 我们不能把它们用作任何标识符名称
下面列举了 Z1h 代码中会使用到的 33 个关键字或保留字:
break case var const continue defer
chan default else fallthrough for in
func go goto if import global
true false nil null undefined try
catch finally throw with as
package return switch synchronized
除了以上介绍的这些关键字, Z1h 语言还有预定义标识符:
len cap new del has append bool
string bytearray
int8 uint8 byte
int16 uint16 rune
int32 uint32
int64 uint64
float32 float64
nil panic
注释
注释//开头, 示例如下:
// 输出2的3次方
2 ** 3
也可以用以下方式注释多行代码
/*
author: Zwei.Ren
*/
空格
语句中适当使用空格能让程序更易阅读.
无空格:
area=math.Pi*2*2
在变量与运算符间加入空格, 程序看起来更加美观, 如:
area = math.Pi * 2 * 2
语言特性
以下展示了Z1h的各种语言特色功能, 供有其它语言基础的开发者快速参考、适应
go
使用go
关键字后面跟着函数调用, 可以将这个函数的执行过程放在另一个协程(新手可以粗暴理解为新的进程)
go是Go语言的一个特色功能, Z1h也借鉴了这种语法
具体实现可参考并发
defer
defer用来声明一个延迟函数, 把这个函数放入到一个栈上, 当代码块结束之前被调用, 也可以说是运行到最外层方法体时调用. 我们经常用他来做一些资源的释放, 比如关闭io操作.
类似于其他语言的 try... catch... finally...
中的finally
, 当然差别还是明显的.
defer是Go语言的一个特色功能, Z1h也借鉴了这种语法
a = {
Say: tag => {print(`I am ${this.name}, tag = ${tag}`)}
}
defer a.Say("Defer 2") // 栈底, 最后输出
defer a.Say("Defer 1")
a.name = "test1"
a.Say("Eval 1")
return a.name = "test2"
synchronized
用来给代码块加锁
synchronized是Java语言的一个特色功能, Z1h也借鉴了这种语法
具体实现可参考并发
with..as..
对于事先需要设置,事后做清理工作的任务, 可以通过with..as..{...}
的方法自动执行Close
方法
with..as..是Python语言的一个特色功能, Z1h也借鉴了这种语法
具体实现可参考函数
三元运算符
支持Java/JavaScript、Python风格的三元运算符
// Java
print('Java三元运算符:', (true ? '是' : '否'))
// Python
print('Python三元运算符:', ('肯定' if false else '否定'))
具体实现可参考运算符
请注意, 使用三元运算符的时候最好都用小括号包起来, 以免产生歧义
字符串
类似JavaScript, 支持 'xxx'、"xxx"、 `name=${n}` 三种字符串声明方式
请注意, 如果使用单引号"企图声明字符串字面值时, 里面只有一个字符, 那么会被声明成int32类型(又称rune/char类型)而非字符串类型