构建自己的编译器(十七) 函数声明

本文探讨了函数声明的不同形式及其正确用法,包括函数如何返回值、如何声明及调用函数等,并讨论了变量类型检查的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 函数

f(a:int, b:int): a+b=>f.

[按理说,默认返回值是变量函数都可以,但是返回值与后缀就没关系了,它本身是一个函数嘛,还要禁止它呢]

[但是这最后返回的时候确实有些不对劲,按理说也应该是int啊]

[类是有后缀的,函数是没有后缀的,我把类和函数归一了,这样仍会报错,但是也没有问题,检查在变量端检查]

[比如你写的函数既能返回整数,也能返回字符串,但某个时刻你只想返回整数,返回字符串报错,那么你只能在变量端检查]

[这么写: a.int<=fun().]

func(ca:int, cb:int): (ca+cb=>func). [正确,声明一个域,则直接返回这个域,相当于走变量赋值的默认那一套,而括号里面的实际上并未执行]

func(): (

    la: 0,

    lb: "yes".

    "No" => lb.

    lfunc.int(a, b): (a+b=>lfunc).

    lfunc2.void():(). [表示不返回任何参数,空域往往表示作为接口]

    lfunc(1, 2). [直接执行了]

).

func: (a+b=>func). [错误,如果是域的话,基本声明方式在前面必须加括号]

[引用声明方式]

[函数一般不会加后缀,因为返回值问题,类一般都要加后缀,为了区分的问题]

func.cls(): fun.cls. [正确,相当于直接拷贝,走变量赋值的默认那一套,但是左部括号和形参都要正确,不然就认为不是一个函数,这种多用于函数或拷贝构造]

[我需要一批关键字,实际上它们起到表达式的作用,赋予类型但不赋予值]

func(a.int, b.int): func(a.int, b.int). [错误,函数的声明形式只有前面是,后面就不是了]

func(a.int, b.int): func(1, 2). [正确,但这实际上是返回的东西,返回它自己,这种多用于没有返回值,因此返回它自己,是类]

func: fun(1, 2). [错误,前面必须要有括号和形参,必须是函数声明形式]

func(1, 2): fun(1, 2). [错误,前面必须是声明形式]

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值