构造体中变量后面的冒号_类型在变量前面还是后面,终于有答案了

我们知道C/C++/Java/C#等语言使用类型前置(严格说来C语言有时候还会把变量名夹到中间),Swift/Kotlin/Rust等使用类型后置。

那么类型名写在变量名后面还是前面好呢?

小孩子才做选择,成年人全都要。Fanx 3.0版本同时支持两种写法:

Int age = 12
var age: Int = 12

fun foo() : Str { .. }
Str foo() { ... }

fanx的成员声明关键字包括:var, let, const, fun, new。局部变量不需要关键字。

两种风格优缺点

之前回答过类似的问题。两种风格完全是品味问题,没有特别的优缺点。但有很多谣言,需要澄清。

类型前置和后置,不会影响编译器的运行效率。也没有解析难度,解析器超前看一个和喝凉水一样自然。都可以做类型推断,类型后置容易做类型推断就是谣言。

实现过程

因为变量名后置时有个冒号,所以两种风格能共存。编译器只需要超前超看一个token就能知道是那种方式了。如果超前下一个发现是冒号那么当前是变量名,下下一个是类型名。反之当前是类型名下一个是变量名。

本来想按照swift的设计使用func表示函数。但可惜func已经被大量用作标识符了,如果func改为关键字就需要改大量代码,所以使用了fun。

总共修改编译器花了一个多小时时间,改动真的比较小。很多新手看来是很大的区别,在编译器看来是家常。

示例代码

完整的一段示例代码:

  class Person {
    var age: Int
    let name: Str

    new make(n: Str) {
      name = n
    }

    fun foo() : Str {
      return name
    }

    static fun main() {
      p : Person = Person("pick")
      s := p.foo
      echo(s)
    }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值