let a = 2023
// func b() {}
struct C {}

class D {}

enum E {
    F | G
}

func fa() {
    let b = 2023
    func fb() {
        println(b)
    }
    fb()
}

class A {
    let b = 2024
    public func fb() {
        println(b)
    }
}

struct Copy {
    var data = 2012
}

class Share {
    var data = 2012
}

let element = "仓颉"

main(): Int64 {
    println("hello world")
    //首先,‌在控制台中输入执行chcp 65001命令,‌
    //这个命令的作用是设置控制台的语言编码格式为UTF-8。‌
    //紧接着,‌再次运行仓颉语言的编译运行命令(‌例如cjpm run)‌,‌此时中文显示应该能够恢复正常。‌
    // println("你好,仓颉!")

    println(a)

    fa()
    A().fb()
    println("--------------------------")

    let a: Int64 = 20
    var b: Int64 = 12
    b = 23
    println("${a}${b}")

    let pi: Float64 = 3.14159
    // Error, cannot assign to immutable value
    // pi = 2.71828 
    println(pi)

    let aa: Int64 = 2023
    let ab = aa
    println("aa - ab = ${aa - ab}")

    println("--------------------------")

    let text: String
    text = "仓颉造字"
    println(text)

    println("--------------------------")
    let c1 = Copy()
    var c2 = c1
    c2.data = 2023
    println("${c1.data}, ${c2.data}")

    let s1 = Share()
    let s2 = s1
    s2.data = 2023
    println("${s1.data}, ${s2.data}")

    println("--------------------------")

    println(element)
    let element = 9
    if (element > 0) {
        let element = 2023
        println(element)
    }
    println(element)

    return 0
}