跳到主要内容

语法范式

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

下一步​