专业的编程技术博客社区

网站首页 > 博客文章 正文

Rust编程语言里的宏回调(rust宏数据)

baijin 2024-09-11 00:55:34 博客文章 5 ℃ 0 评论

rust编程语言里的宏的功能

应该是高级编程技术


提供了对语法的扩展

但是使用上也是有限制的


宏要想嵌套就是有限制的

嵌套就是一个宏需要调用另一个


这时候就需要用回调

回调就是传另一个宏名称


类似JavaScript等其它语言的callback

你在用callback的时候会追加括号()吗

应该不会

否则就不是回调了

而是把callback结果传入来了


宏同样不建议传入另一个宏的结果

所以可行的方式就是回调

macro_rules! pick_dept{

(dp1)=>{println!("got dept 1.")};

(dp2)=>{println!("got dept 2.")};

(dp3)=>{println!("got dept 3.")};

($($other:tt)*)=>{println!("no dept")};

}


macro_rules! got_dept2{

()=>{dp2};

}


pick_dept!(got_dept2!());

输出结果就是no dept


macro_rules! call_dept2{

($call:ident)=>{

$call!(dp2)

};

}


回调方式是

call_dept2!(pick_dept)

这次输出结果就是got dept 2.


怎么样,了解了么

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表