- wasm 指令不支持 i8 和 i16,因此提议去掉这2类整型数
- 在函数内 去掉 var 关键字(只用于全局变量),保持和 struct 内风格一致
因为涉及不兼容修改,会提供过渡期方案。
大家先线上讨论(会议时间后面更新到这里),稍后我们会组织视频会议征询大家意见。
最并提报凹语言发展委员会投票决定。
因为涉及不兼容修改,会提供过渡期方案。
大家先线上讨论(会议时间后面更新到这里),稍后我们会组织视频会议征询大家意见。
最并提报凹语言发展委员会投票决定。
i8/i16 不建议删除,因为对接其他语言时会遇到这些基本类型。
var 简写可能和 label 有冲突:
// x: int
// x: int = 123
// END: int = 123
一个可能的思路是改造 label 语法
虽然大多数语言设计都内置基本类型,技术上是否可将基本数据类型提取到标准库而非内置于语言?语言规则可以更加简化?
Go语言中这些i8/i16基础类型其实就是在builtin包定义的,所以它们并非是关键字,所以语言本身已经减少了一些复杂性。
但是对于基础类型的四则运算,则一般是需要语言内置的,否则使用太复杂了
最近版本已经初步实现 var 可省略的语法:
多谢,才知道。那么像 bool int string 等也是在包中定义的?数值运算之外的如字符串加法 "aaa"+"bbb"
是语言还是包内实现的呢?
函数返回值还是用 =>吗?如 func add(a: i32, b: i32) => i32
?
另外,将 func 作为一种类型可行吗?如:
main: func = {
...
}
add: func(a: i32, b: i32 => i32) = {
...
}
这些类型和运算能力都是语言内置的,但是怎么样将这些类型绑定到i8/i16这些名字上是在 builtin 包完成的。
func 本来就是可以作为类型的:
func main {
L0, L1: bool
L: int = 123
fnAdd: func(a, b: i32) => i32 = func(a, b: i32) => i32 {
return a+b
}
fnAdd2: func(a, b: i32) => i32 = fnAdd
Loop:
for 1 > 0 {
println(L0, L1, L, fnAdd(1,2), fnAdd2(3,4))
break Loop
}
}
这里是否多粘贴了一段?是
fnAdd: func(a, b: i32) => i32 = {
return a+b
}
还是
fnAdd = func(a, b: i32) => i32 {
return a+b
}
?
另外,非函数内定义的函数包括main也可以这样定义吗?
冒号后面是类型,如果省略类型则变成赋值语句,或者是 := 语法
为何 func(a, b: i32) => i32
要重复两次呢?
fnAdd: func(a, b: i32) => i32 = func(a, b: i32) => i32 {
return a+b
}
冒号和等于号之间的是类型,等号右边是闭包对象值。
可以省略类型,那是 := 的用法,不是 name :type 这种用法
群里提到“函数内局部变量定义和struct成员/函数参数/函数返回值保持统一”,请问其中“函数返回值”指的是?
func swap(a0, b0: i32) => (b1, a1: i32) {
ax, bx: i32
ax, bx = a0, b0
a1, b1 = bx, ax
return
}