内建类型

  • Int, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64
  • Float, Float32, Float64
  • Bool
  • Void

Int默认32位,Float默认32位。

字符串

字符串可以多行

var s = "ab
         cd"

三引号字符串,密码的双引号不需要转义。

var s = """ab"
           cd"""

字符串字面量的类型是raw*const Int8, 可以自动转为sric::String

字符

字符是指单个字母,类型是Int8

var c : Int8 = 'A'

注释

单行注释

//comment

多行注释

/*
 comment
*/

文档注释

/**
    introduce
*/

注解

//@method: GET

注解可以通过反射接口动态获取。

变量定义

  • 使用var定义变量,不管是否可变都用var。
  • 变量类型写变量后。
  • 每个语句只能定义一个变量。
var i: Int = 0

只有函数内的局部变量才支持类型推断

var i = 0

变量自动初始化为默认值,如果想保持随机值,则使用uninit关键字。

var i = uninit

全局变量必须是不可变的,除非加unsafe修饰

var i: const Int = 0

函数定义

  • 函数使用fun开始
  • 返回值是Void时,可省略返回值
  • 函数的名称必须是唯一值的,不支持通过参数重载
fun foo(a: Int): Int { return 0 }
fun foo2() {}

默认参数和命名参数

fun foo(a: Int, b: Int = 0) {}
foo(a: 1)

命名参数让你能显式写出参数名称,增加可读性。

前向声明

没有类似于C/C++的前向声明,前面的函数也能调用后面的。 因为sric采用的是多层编译的编译器架构。

可见性

变量和函数都支持可见性标记

public
private
protected
readonly

例如

private fun foo() {}
readonly var i: Int = 0
  • 全局变量和函数的可见性保护区域是当前文件,如果声明为private则外部文件不可见。
  • 默认的可见性都是public,所有不用写任何public。
  • protected表示当前模块内可见,或者继承的子类可见。
  • readonly只能用来修饰变量,不能修饰函数。表示公开读,私有写。