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

如何通过网站做调查问卷石家庄网站托管公司

如何通过网站做调查问卷,石家庄网站托管公司,网站建设开发费会计分录,除了百度指数还有哪些指数官方文档#xff1a;https://kotlinlang.org/docs/inline-classes.html 注#xff1a;inline class 关键字已经被废弃#xff0c;取而代之的是value class。现在使用内联类需要定义类为value class#xff0c;并使用JvmInline注解进行标注。 一、使用场景 有时候#xff…官方文档https://kotlinlang.org/docs/inline-classes.html 注inline class 关键字已经被废弃取而代之的是value class。现在使用内联类需要定义类为value class并使用JvmInline注解进行标注。 一、使用场景 有时候根据业务需求我们需要一些包装类。但是包装类在运行时会造成一些不可避免的额外开支比如堆上分配的额外空间。尤其是对于基本类型的包装类——因为基本类型在运行时会有很多其他优化而包装类型没有。于是内联类便应运而生了。 内联类在编码时作为一个其他类型的包装类使用而在运行时会被拆开作为其内部值类型使用。 例如当我们设计了一个动画 class Animation(duration: Int) {// ... }duration 参数可能会让人迷惑它的单位是什么秒或者毫秒虽然注释可以解决一切问题但它不在讨论范围之内这个时候就可以用到内联类。 我们可以创建一系列的内联类来表示不同的时间单位 JvmInline value class Millis(val value: Int) JvmInline value class Second(val value: Int) // ...假使 duration 参数单位是毫秒那么将其类型修改为 Millis 类型即可 class Animation(duration: Millis) {// ... }这样当创建 Animation 对象的时候就需要强制传入一个 Millis 类型的对象如果传入的是一个 Second 类型的对象编译器就会报错。 二、内联类允许的成员 内联类允许函数、init 块、以及没有 backing field 的属性。 JvmInline value class Name(val s: String) {init {require(s.length 0) { }}val length: Intget() s.lengthfun greet() {println(Hello, $s)} }fun main() {val name Name(Kotlin)name.greet() // method greet is called as a static methodprintln(name.length) // property getter is called as a static method }三、内联类和普通包装类的区别 对于原生类型来说在运行时会进行大量的优化而包装类不会进行处理。 而内联类在运行时会自动使用内联类型而不是包装类型进行处理。 例如以下例子中 // 毫秒 inline class Millisecond(val value: Long)private fun doSomething(millisecond: Millisecond) {Log.i(TAG, doSomething: $millisecond) }通过 IDE 的 Kotlin 字节码反编译功能可以看到生成的 Kotlin 字节码已经没有 Millisecond 类型了而是直接使用的 Long 类型 而普通的包装类则不会进行如此优化 class LongWrapper(val millis: Long)private fun doSomething2(millisecond: LongWrapper) {Log.i(TAG, doSomething: $millisecond) }四、其他 1. 继承 内联类只允许继承接口而不允许继承类也不允许被其他类继承。 2. 与 typealias 的相比 在读取值的时候value class 和 typealias 起到了类似的作用但是当进行赋值的时候情况就变得不一样了。 假设我们现在使用一个类型 Name表示一个字符串值。同时有两个函数 setString 和 setName fun setName(name: Name) {} fun setString(string: String) {}在使用 typealias 的情况下不管是 setString 还是 setName均可以传入 Name 或是 String 类型的参数 typealias Name String fun main() {val name: Name BobsetName(Bob) // √setString(name) // √ }但是如果使用的是内联类则二者均是不被允许的 JvmInline value class Name(value: String) fun main() {val name: Name BobsetName(Bob) // ×setString(name) // × }五、总结 内联类相当于一个包装类但是在编译时会自动进行拆包使用内部数据类型。在实际使用中和普通包装类相同。内联类最大的优点在于对于基本类型的包装不会消耗额外的性能。
http://www.w-s-a.com/news/858069/

相关文章:

  • 不让网站在手机怎么做门户网站 模板之家
  • 网站建设及推广图片wordpress文章摘要调用
  • 手机版网站案例全国信息企业公示系统
  • 模仿别人网站建设银行广州招聘网站
  • 沧州网站建设沧州内页优化
  • 代加工网站有哪些专门做网站关键词排名
  • 郑州做景区网站建设公司软件开发者模式怎么打开
  • 长沙企业网站建设哪家好做app一般多少钱
  • 南宁一站网网络技术有限公司网站开发技术应用领域
  • 公司网站建设方案ppt专业构建网站的公司
  • 深圳网站建设方维网络网站框架设计好后怎么做
  • 合肥网站建设过程网站栏目建设调研
  • 手机访问网站页面丢失北京电商平台网站建设
  • 郑州网站怎么推广中山 网站关键词优化
  • 国外试用网站空间网站建设与管理题目
  • 淄博网赢网站建设网站设计的技术选择
  • 建外贸网站 东莞厦门做网站最好的公司
  • 为您服务网站新网站做百度推广
  • 电子商务免费网站建设网站制作哪个好薇
  • 全面启动门户网站建设中小型企业建设一个网站大概需要多少钱
  • 建网站一般多少钱网站建设上传服务器步骤
  • 手机销售网站怎么做的网站推广优化建设方案
  • 做任务分享赚钱的网站德阳网站建设公司哪家好
  • 云南建设工程质量监督网站wordpress网站导航主题
  • 徐州网站建设哪家好薇手机开源网站代码
  • 更新网站要怎么做呢泰安市58同城招聘网
  • 溧阳网站建设价格企业网站设计费用
  • 我建设的网站打开很慢河北住房和城乡建设厅网站卡
  • 门户网站广告的特点有网站的建设初步定位
  • 建设网站第一步网页建设方案