目前主流语言比较
语言特性比较
c、c++、c#、go、groovy、java、kotlin、node、python、rust、scalar
http | swagger | null safe | 多继承 | 泛型 | feign | postgresql | ORM | GraphQL | 元组 | Named Parameter | |
---|---|---|---|---|---|---|---|---|---|---|---|
c | 否 | 否 | struct、* | N | |||||||
c++ | 否 | 否 | struct、*、tuple | ||||||||
c# | Y | ||||||||||
go | Y | ||||||||||
groovy | Y(Tuple) | ||||||||||
java | struct | ||||||||||
kotlin | pair | ||||||||||
node | 解构赋值 | ||||||||||
python | Y | ||||||||||
rust | Y | ||||||||||
scalar | Y |
null
@Notnull methodA()
@Notnull methodB(@Notnull b)
@Nullable methodC()@Notnull var a=methodA(); // a被声明为一定不能为null的变量,methodA声明返回值一定不是null,这句话正常执行
@Nullable var b=null; // b被声明为可以为null的变量
methodB(b); // methodB声明入参一定不能是null,所以这句话会在IDE报错
methodB(a); // 由于a是methodA的返回值
b = methodC(); //methodC的返回值可能是null,但是b被声明为可以为null,所以这句合法
a = methodC(); //这句不合法,因为a不能是null
fun multiMethod(){return "hello",1
}name,age = multiMethod()
fun multiParameter(arg1,arg2,arg3){}
multiParameter(1,2,3)
multiParameter(arg2=2)