BT语言的函数声明,超级简单

fn函数

函数是编程语言中的一个重要概念,由事件驱动或者当它被调用时执行的可重复使用的代码块。

在BT中,所有的语句都具有返回值,fn函数同样也是,默认会返回函数中最后一条语句的数据,当然你也可以在任何地方使用return返回数据,此时它会中断return后面的所有语句执行。

// 这是一个简单的函数声明
fn add(a, b){
    a + b
}
print add(1, 2)

// 如果你具有一定的编程基础,应该很理解`return`的使用,她用于返回数据,并中断后续的代码执行
fn add(a){
    if a > 10 {
        return '大于10'
    } else {
        return '小于10'
    }
}
print add(20)

// 也可以使用赋值的方式声明函数,其实这个没啥意义,你喜欢就好,因为在bt中,上面的函数声明是可以重复声明的
add = fn(a){
    return a
}
print add(123)

函数中的参数支持设置默认参数,如下:

// 给参数a和b添加默认参数
fn add(a=10, b=20){
    a + b
}
print add() // 输出 30
print add(30) // 输出 50
print add(30, 40) // 输出 70

在编程语言中,函数声明大多使用function,也有使用func,而BT语言借鉴了母语Rust语言,延续使用了fn,我个人而言fn比func要好看,仅此而已。

而表达式的返回值也借鉴了Rust,以最后一条语句为返回值,使其更加简洁。

BT语言的函数使用和其他编程语言使用都一样,在这里作者需要跟大家说一声,BT语言的作用域借鉴了JS,所以函数之外的变量在函数内能正常访问,看下面的代码示例:

title = 'hello'

// 声明一个函数
fn set(){
    title = 'world'
}

// 输出world,因为赋值也拥有返回值啊!就这么韧性
print set()

// 输出world,因为在set函数中被重新赋值了
print title

看到这里,你或许会有疑问,当我们定义一系列函数库时,那函数内的变量岂不是会污染全局变量?是的,是有这个风险,但BT语言既然这么设计,自然有其解决方案。

在函数中,当我们不需要读取外部变量或者需要再函数内的作用域中声明变量,那么我们使用关键字 let 声明即可。

title = 'hello'

// 声明一个函数
fn set(){
    let title = 'world'

    // 输出world
    print title
}

set()

// 输出hello
print title

BT语言的作用域与JS一致,不过,你需要了解 let 关键字的具体用处,它主要用于在当前作用域中声明变量,而不污染外部变量,我们看一个复杂的

title = 'hello'

// 声明一个函数
fn set(){
    let title = 'world'

    // 声明一个函数
    fn demo(){
        
        title = '你好'

        let title = 'hi'

        // 输出hi
        print title
    }

    // 输出你好
    print title
}

set()

// 输出hello
print title

很绕?你只需要知道在当前作用域中,未声明 let 的变量赋值,修改的是第一次声明所在的作用域,而使用 let 声明的变量,则会在当前作用域中重新声明,而不污染它所在作用域赋的值。

所以BT语言中,声明函数时,如果不需要污染外部变量,请用 let 关键字,若需要操作外部变量,则可以不用 let 关键字啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值