语法范式
Alia 支持多范式编程,本文档的描述对象为标准范式。
1. 换行终结
分句符 '\n' 与 ';' 等价,标准范式中的语句终结标志为换行符。
以下代码片段属于标准范式:
const name = 'Alia'
const version = 0.1
以下代码片段属于非标准范式:
const name = 'Alia';
const version = 0.1;
2. 显式类型
<Dynamic> 为动态类型,标准范式中的类型约束为显式类型。
以下代码片段属于标准范式:
const name = 'Alia'
const count: Number = 42
const items: Array = [1, 2, 3]
以下代码片段属于非标准范式:
const name: Dynamic = 'Alia'
3. 单行折叠
非 Stack 语句为单行形态,仅含单条指令的 Stack 块为单行形态。
以下代码片段属于标准范式:
const sum = a + b
const double = alias <Number n> -> { n * 2 }
const calculate = alias <Number a> and <Number b> -> {
const sum = a + b
const product = a * b
sum + product
}
4. 空格缩进
层级缩进字符为空格字符。
以下代码片段属于标准范式:
const Person = *[
name: '',
age: 0,
greet: alias -> { 'Hello, ' .. self.name }
]
以下代码片段属于非标准范式:
const Person = *[
name: '',
age: 0
]
5. 空格隔离
操作数与运算符之间存在显式空格。
以下代码片段属于标准范式:
const sum = a + b
const product = x * y
const result = value1 + value2 * value3
以下代码片段属于非标准范式:
const sum=a+b
const product=x*y
6. 语义连接
alias 声明的形参列表包含辅助关键字,辅助关键字连接形参语义,and 与 with 为辅助关键字。
以下代码片段属于标准范式:
alias add <Number a> and <Number b> -> { a + b }
alias greet <String name> with <String greeting> -> { greeting .. ', ' .. name }
print add 1 and 2
print greet 'Alice' with 'Hello'
7. 隐式返回
位于栈末尾的返回值免于 return 关键字,直接落值即视为返回。
以下代码片段属于标准范式:
const square = alias <Number n> -> { n * n }
const max = alias <Number a> and <Number b> -> { a > b ? a : b }
以下代码片段属于非标准范式:
const square = alias <Number n> -> { return n * n }
完整示例
以下代码片段属于标准范式:
class Person *[
name: '',
age: 0,
greet: alias -> { 'Hello, ' .. self.name },
new: alias named <String name> aged <Number age> -> {
self.name = name
self.age = age
self
}
]
alias add <Number a> and <Number b> -> { a + b }
alias multiply <Number a> and <Number b> -> { a * b }
const person = new Person named 'Alice' aged 30
print call person.greet
print add 10 and 20
print multiply 5 and 3