[略略略] 2023-10-04 10:32 采纳率: 47.8%
浏览 4
已结题

Kotlin以下代码是什么函数定义方法呢

请问Kotlin语言中,以下代码是什么定义方法?

a(fun b(param: Int): String {
  return param.toString()
});

看起来格式就是 a(参数); ,没有加函数体也没有加等于号,初学不是看的很懂,搜索引擎没找到这是什么用法,麻烦解释以下,非常感谢!

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-04 12:02
    关注

    【相关推荐】



    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/1100008
    • 这篇博客你也可以参考下:Kotlin语言学习之将函数作为参数传递,使用双冒号::引用其他方法
    • 您还可以看一下 CSDN讲师老师的为什么说Kotlin是你下一个要掌握的语言?课程中的 为什么说Kotlin是你下一个要掌握的语言?(上)小节, 巩固相关知识点
    • 除此之外, 这篇博客: (新) Kotlin搞起来 —— 2.常识与基础知识中的 3.基本数据类型,常量,变量,延迟加载,作用域 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
      • 基本数据类型

      Kotlin中使用接近于Java的方式(内置类型)来表示数字,但是又不完全相同,
      Kotlin是静态类型语言,意味着所有变量和表达式类型编译时已确定
      在Kotlin中所有变量的成员方法和属性都是对象。数字相关的内置类型如下:
      (PS:都是继承Number类)

      需要注意几点:

      • 1.没有自动向上转型,比如Int转Long,需要自己调toXxx方法转,比如:
        val a: Int = 1024         val b:Long = a.toLong()
      • 2.Long类型结尾必须为大写的L,不能为小写,比如1024L
      • 3.Kotlin中的字符Char不是基本数据类型(不继承Number),用单引号来声明,
        比如’c’,不能像Java一样直接拿来当数字使,如果你想把Char的值给Int,需要调toInt()方法
      • 4.Boolean的值为true或false
      • 5.Kotlin不支持8进制十六进制0x开头,进制0b开头
      • 6.位运算符,Java中的与或运算符用:|&,kotlin中使用orand关键字来替代
        其他运算符也有分别的关键字替代:shl(有符号左移),shr(有符号右移),ushr(无符号右移)
        xor(按位异或),inv(按位取反)
      • 7.(1.1版本新增)支持下划线使数字常量更易读,比如:val oneMillion = 1_000_000

      • 常量与变量

      Kotlin中使用 val 关键字来声明一个只读常量(final,定义后,如果去修改变值是会报错),
      而使用 var 关键字来声明一个变量

      普通的写法示例(显式指定)

      和Java里那种int b = 123;很类似,而Kotlin里有类型推断(Type inference)这种东西,
      你甚至可以不指定数据类型,让它自动从后面的语句中推断出来对应的类型!比如你可以写成:

      然后问题来了,初始化的问题,比如Android中我们初始化控件会先写一个变量然后初始化为null,
      而在Kotlin如果你直接这样写是会报错的:

      不能为空值?是的,这涉及到Kotlin中引以为傲的NULL安全,后面会细说,这里告诉你加个
      问号就可以了:

      为什么你学到后面就知道了,当然这里肯定还有另外一种解决的套路。对了,有人喜欢把这种
      先定义,用到的时候再去初始化的套路叫做:延时加载,而kotlin中对此也提供了一个操
      作符:lateinit,用法也很简单:


      • 作用域

      Kotlin中和Java是有些许不同的:

      • public:默认,总是可见
      • internal:同模块可见,起保护作用,防止模块外被调用
      • private:仅在同一个文件中可见
      • protected:类似于private,但对子类也可见

      既然说到作用域,相信你会对常量和变量的作用域感兴趣,我们把kotlin文件转成Java文件
      就一清二楚了:

      从图中不难得出这样的结论:

      默认作用域privateval修饰常量为final会生成get方法,而var修饰变量则会自动生成get和set方法。



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月9日
  • 创建了问题 10月4日

悬赏问题

  • ¥15 铜与钢双金属板叠加在一起每种材料300mm长,18mm宽,4mm厚一端固定并加热至80℃,当加热端温度保持不变时另一端的稳态温度。ansys
  • ¥15 django5安装失败
  • ¥60 ios系统storm sniffer 写入http规则加密如何破解?
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥15 ANSYS分析简单钎焊问题
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上