当前位置: 首页 > news >正文

2408d,加@GC作为函数属性

原文

按函数属性添加@gc

概述

按新的用作@nogc属性的取反函数属性,来添加@gc.

理由

当对多个函数应用@nogc@nogc:@nogc{}属性语法时,可能在其他属性中,随后包含要用(GC)垃集器分配的函数,需要如下:
1,更改定义函数的位置.
2,关闭大括号声明块,并在定义重新打开它,使用更多属性时,会违反DRY
3,用括号语法更改冒号语法,然后应用上述项符号.
4,消除冒号或块语法,并附加属性到,除了新函数的每个函数定义.
此类更改会导致更大的差异,且更难审查.

前期工作

该提案精神类似,按throw属性取反的按函数属性/存储类添加不抛DIP1029.
这里

描述

语义

语义上讲,@gc函数恰好是个不是@nogc的函数.可在语法上附加@nogc属性的都可附加@gc属性.

@nogc
{int[] f()     => [1]; //错误:`"@nogc"`函数`"f"`中的`数组文本`可能会导致`GC`分配int[] g() @gc => [1]; //好的,`"g"`不是`"@nogc"`
}

@gc@nogc属性与其他对立属性对如(@safe/@systemnothrow/throw)完全相同.

void f() @gc @nogc; //错误:属性冲突

@systemthrow一样,@gc属性是逆变的.

void f(void function() @gc callback);
void function(void function() @nogc) fp = &f; //好
void g(void function() @nogc callback);void function(void function() @gc callback) gp = &g; //错误.

可用@nogc方法覆盖虚@gc方法,但不能用@gc方法覆盖虚@nogc方法.

语法

AtAttribute:@ disable@ __future@ nogc
+       @ gc@ liveProperty@ safe@ system@ trustedUserDefinedAttribute

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java基于数据库、乐观锁、悲观锁、Redis、Zookeeper分布式锁的简单案例实现(保姆级教程)
  • 面试题:MQ
  • seata的使用(SpringBoot项目整合seata)
  • RabbitMQ-消息队列延迟队列一
  • Dockerfile搭建LNMP
  • Linux安装jdk8,tomcat和mysql
  • 【layUI】只能选某个特定区间的日历
  • 24/8/18算法笔记 目标导向强化学习
  • 【C++】C++11新增特性
  • Fabric:关于链码的编写及部署的问题记录
  • 在CodeBlocks搭建SDL2工程OLED液晶模拟器虚拟OLED单色液晶(128x64)
  • 使用MongoDB构建AI:Story Tools Studio将生成式AI引入Myth Maker AI游戏
  • vue中点击导航栏,动态改变样式,经典写法
  • Linux网络:基于OS的网络架构
  • 【Kubernetes】k8s集群图形化管理工具之rancher
  • ----------
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【mysql】环境安装、服务启动、密码设置
  • Java面向对象及其三大特征
  • js如何打印object对象
  • JS实现简单的MVC模式开发小游戏
  • Laravel Telescope:优雅的应用调试工具
  • Node + FFmpeg 实现Canvas动画导出视频
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Python进阶细节
  • spring-boot List转Page
  • 缓存与缓冲
  • 类orAPI - 收藏集 - 掘金
  • 软件开发学习的5大技巧,你知道吗?
  • 使用agvtool更改app version/build
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​马来语翻译中文去哪比较好?
  • ## 1.3.Git命令
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (JS基础)String 类型
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (六)激光线扫描-三维重建
  • (每日一问)基础知识:堆与栈的区别
  • (转)setTimeout 和 setInterval 的区别
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET和.COM和.CN域名区别
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .Net下的签名与混淆
  • @Responsebody与@RequestBody
  • @SpringBootConfiguration重复加载报错
  • [AIGC] CompletableFuture的重要方法有哪些?
  • [AIGC] Redis基础命令集详细介绍