Kotlin函数详解与使用示例

kotlin例子 使用Springboot框架,构建工具使用gradle,语言使用kotlin,数据库使用mysql,持久化技术使用springdatajpa,做的一个比较简单的CRUD的一个小demo,数据库需要自己在本地进行新建一个然后代码里面配置,端口号默认1002 立即下载

在 Kotlin 中,函数是非常核心的语法。无论是普通业务逻辑、Android 点击事件、Activity 生命周期、工具方法,还是后续学习协程、Compose、扩展函数,都会大量使用函数。

Kotlin 中使用 fun 关键字定义函数。


一、函数的基本定义

Kotlin 定义函数的基本格式如下:

fun 函数名(参数名: 参数类型): 返回值类型 {
    函数体
    return 返回值
}

示例:

fun add(a: Int, b: Int): Int {
    return a + b
}

调用函数:

val result = add(10, 20)
println(result)

输出结果:

30
组成部分说明
fun定义函数的关键字
add函数名
a: Int, b: Int函数参数
: Int返回值类型
return a + b返回计算结果

二、没有返回值的函数

如果函数没有返回值,可以使用 Unit。Unit 类似 Java 中的 void。

fun sayHello(): Unit {
    println("Hello Kotlin")
}

不过在 Kotlin 中,Unit 一般可以省略:

fun sayHello() {
    println("Hello Kotlin")
}

调用:

sayHello()

输出:

Hello Kotlin

Android 中很常见,例如:

fun showMessage() {
    Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show()
}

三、有参数的函数

函数可以接收参数。

fun greet(name: String) {
    println("你好,$name")
}

调用:

greet("张三")

输出:

你好,张三

多个参数:

fun showUserInfo(name: String, age: Int) {
    println("姓名:$name,年龄:$age")
}

调用:

showUserInfo("李四", 20)

四、有返回值的函数

如果函数需要返回结果,需要在参数列表后面写返回值类型。

fun getUserName(): String {
    return "张三"
}

调用:

val name = getUserName()
println(name)

返回整数:

fun getAge(): Int {
    return 18
}

返回布尔值:

fun isLogin(): Boolean {
    return true
}

Android 示例:

fun isPasswordValid(password: String): Boolean {
    return password.length >= 6
}

使用:

val password = "123456"

if (isPasswordValid(password)) {
    println("密码合法")
} else {
    println("密码长度不能少于 6 位")
}

五、表达式函数

如果函数体只有一行代码,可以使用表达式函数写法。

普通写法:

fun add(a: Int, b: Int): Int {
    return a + b
}

简化写法:

fun add(a: Int, b: Int): Int = a + b

还可以省略返回值类型,因为 Kotlin 可以自动推断:

fun add(a: Int, b: Int) = a + b

字符串示例:

fun getWelcomeText(name: String) = "欢迎你,$name"

调用:

val text = getWelcomeText("张三")
println(text)

输出:

欢迎你,张三

六、默认参数

Kotlin 支持默认参数。也就是说,定义函数时可以给参数设置默认值。

fun greet(name: String = "游客") {
    println("你好,$name")
}

调用时可以传参:

greet("张三")

也可以不传参:

greet()

Android 中也可以这样写:

fun showToast(message: String = "操作成功") {
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}

调用:

showToast("登录成功")
showToast()

七、命名参数

Kotlin 支持命名参数。调用函数时,可以明确写出参数名。

fun showUserInfo(name: String, age: Int, city: String) {
    println("姓名:$name,年龄:$age,城市:$city")
}

普通调用:

showUserInfo("张三", 18, "北京")

命名参数调用:

showUserInfo(name = "张三", age = 18, city = "北京")

命名参数的好处是代码更清晰,尤其是参数比较多时。

还可以调整参数顺序:

showUserInfo(city = "北京", age = 18, name = "张三")

八、默认参数和命名参数结合使用

fun createUser(
    name: String,
    age: Int = 18,
    city: String = "未知"
) {
    println("姓名:$name,年龄:$age,城市:$city")
}

调用:

createUser(name = "张三")

输出:

姓名:张三,年龄:18,城市:未知

也可以只修改其中一个默认参数:

createUser(name = "李四", city = "上海")

输出:

姓名:李四,年龄:18,城市:上海

这种写法在 Android 开发中很常用,可以减少重载方法的数量。


九、可空参数

Kotlin 默认参数不能为 null。

fun printName(name: String) {
    println(name)
}

下面这样调用会报错:

printName(null) // 错误

如果参数允许为空,需要在类型后面加 ?。

fun printName(name: String?) {
    println(name)
}

调用:

printName(null)

可空参数使用时通常要做空判断:

fun printName(name: String?) {
    if (name != null) {
        println(name.length)
    } else {
        println("name 为空")
    }
}

也可以使用安全调用:

fun printName(name: String?) {
    println(name?.length)
}

Android 示例:

fun setTitleText(title: String?) {
    textView.text = title ?: "默认标题"
}

这里的 ?: 是 Elvis 操作符,表示如果 title 为空,就使用 "默认标题"。


十、函数返回可空类型

函数的返回值也可以是可空类型。

fun getUserName(): String? {
    return null
}

使用时需要注意空安全:

val name = getUserName()
println(name?.length)

也可以设置默认值:

val name = getUserName() ?: "默认用户"
println(name)

Android 示例:

fun getInputText(): String? {
    val text = editText.text.toString()
    return if (text.isBlank()) {
        null
    } else {
        text
    }
}

十一、局部函数

Kotlin 支持在函数内部定义函数,这种函数叫局部函数。

fun login(username: String, password: String) {

    fun checkInput(): Boolean {
        return username.isNotBlank() && password.isNotBlank()
    }

    if (checkInput()) {
        println("开始登录")
    } else {
        println("用户名或密码不能为空")
    }
}

局部函数适合封装只在当前函数内部使用的小逻辑。


十二、成员函数

定义在类中的函数叫成员函数。

class User {

    fun login() {
        println("用户登录")
    }

    fun logout() {
        println("用户退出")
    }
}

调用:

val user = User()
user.login()
user.logout()

Android 中的 Activity 里定义的方法就是成员函数:

class MainActivity : AppCompatActivity() {

    fun initView() {
        println("初始化界面")
    }

    fun initData() {
        println("初始化数据")
    }
}

十三、顶层函数

Kotlin 支持顶层函数。也就是说,函数可以不写在类里面。

fun formatTime(time: Long): String {
    return "$time ms"
}

这种函数可以直接定义在 .kt 文件中。

例如创建一个工具文件:

// FileUtils.kt

fun getFileName(path: String): String {
    return path.substringAfterLast("/")
}

使用:

val fileName = getFileName("/sdcard/test.txt")
println(fileName)

输出:

test.txt

顶层函数很适合写工具方法。


十四、扩展函数

扩展函数是 Kotlin 非常常用的特性。它可以在不修改原类代码的情况下,给已有类型添加新的函数。

基本格式:

fun 类型.函数名() {
    函数体
}

示例:给 String 添加一个判断是否是手机号的函数。

fun String.isPhoneNumber(): Boolean {
    return this.length == 11
}

调用:

val phone = "13800138000"

if (phone.isPhoneNumber()) {
    println("手机号格式正确")
}

这里的 this 表示当前调用这个函数的字符串对象。

Android 中常见扩展函数:

fun Context.showToast(message: String) {
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}

在 Activity 中调用:

showToast("保存成功")

也可以给 View 添加扩展函数:

fun View.visible() {
    visibility = View.VISIBLE
}

fun View.gone() {
    visibility = View.GONE
}

使用:

progressBar.visible()
textView.gone()

扩展函数可以让 Android 代码更简洁。


十五、函数作为参数

Kotlin 中函数可以作为参数传递。这也是后续学习 Lambda、回调、协程、Compose 的基础。

示例:

fun doSomething(action: () -> Unit) {
    action()
}

调用:

doSomething {
    println("执行任务")
}

这里的 () -> Unit 表示:

没有参数,没有返回值的函数类型

再看一个带参数的函数类型:

fun calculate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

调用:

val result = calculate(10, 20) { x, y ->
    x + y
}

println(result)

输出:

30

十六、Lambda 表达式

Lambda 可以理解为匿名函数。

普通函数:

fun add(a: Int, b: Int): Int {
    return a + b
}

Lambda 写法:

val add = { a: Int, b: Int ->
    a + b
}

调用:

val result = add(10, 20)
println(result)

Android 点击事件中经常使用 Lambda:

button.setOnClickListener {
    Toast.makeText(this, "按钮被点击了", Toast.LENGTH_SHORT).show()
}

这其实就是把一段函数逻辑传给了 setOnClickListener。


十七、高阶函数

如果一个函数满足下面任意一个条件,就叫高阶函数:

  1. 函数接收另一个函数作为参数。
  2. 函数返回另一个函数。

示例:

fun repeatTask(times: Int, task: () -> Unit) {
    for (i in 1..times) {
        task()
    }
}

调用:

repeatTask(3) {
    println("执行任务")
}

输出:

执行任务
执行任务
执行任务

Android 中可以用高阶函数封装点击事件:

fun View.onClick(action: () -> Unit) {
    setOnClickListener {
        action()
    }
}

使用:

button.onClick {
    showToast("点击了按钮")
}

十八、匿名函数

除了 Lambda,Kotlin 也支持匿名函数。

val add = fun(a: Int, b: Int): Int {
    return a + b
}

调用:

val result = add(10, 20)
println(result)

匿名函数一般没有 Lambda 常用,但在需要明确返回类型或复杂逻辑时也可以使用。


十九、递归函数

函数可以调用自己,这种函数叫递归函数。

示例:计算阶乘。

fun factorial(n: Int): Int {
    return if (n == 1) {
        1
    } else {
        n * factorial(n - 1)
    }
}

调用:

val result = factorial(5)
println(result)

输出:

120

递归使用时要注意必须有结束条件,否则会造成死循环或栈溢出。


二十、Android 中常见函数使用场景

1. 初始化界面

fun initView() {
    titleTextView.text = "首页"
    progressBar.visibility = View.GONE
}

2. 初始化数据

fun initData() {
    val list = listOf("Kotlin", "Android", "Jetpack")
    println(list)
}

3. 设置点击事件

fun initListener() {
    loginButton.setOnClickListener {
        login()
    }
}

4. 登录逻辑

fun login() {
    val username = usernameEditText.text.toString()
    val password = passwordEditText.text.toString()

    if (username.isBlank() || password.isBlank()) {
        showToast("用户名或密码不能为空")
        return
    }

    showToast("开始登录")
}

5. Toast 提示

fun showToast(message: String) {
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}

6. 表单校验

fun checkInput(username: String, password: String): Boolean {
    return username.isNotBlank() && password.length >= 6
}

二十一、完整 Android 示例

下面是一个简单的 Android Kotlin 函数使用示例:

class MainActivity : AppCompatActivity() {

    private lateinit var usernameEditText: EditText
    private lateinit var passwordEditText: EditText
    private lateinit var loginButton: Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        initView()
        initListener()
    }

    private fun initView() {
        usernameEditText = findViewById(R.id.usernameEditText)
        passwordEditText = findViewById(R.id.passwordEditText)
        loginButton = findViewById(R.id.loginButton)
    }

    private fun initListener() {
        loginButton.setOnClickListener {
            login()
        }
    }

    private fun login() {
        val username = usernameEditText.text.toString()
        val password = passwordEditText.text.toString()

        if (!checkInput(username, password)) {
            showToast("用户名或密码不能为空,密码不能少于 6 位")
            return
        }

        showToast("登录成功")
    }

    private fun checkInput(username: String, password: String): Boolean {
        return username.isNotBlank() && password.length >= 6
    }

    private fun showToast(message: String) {
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
    }
}

这个例子中用到了多个函数:

函数名作用
onCreate()Activity 生命周期方法
initView()初始化控件
initListener()设置点击事件
login()处理登录逻辑
checkInput()校验输入内容
showToast()显示提示信息

二十二、函数命名建议

函数名一般使用小驼峰命名法。

正确示例:

fun getUserName() {}
fun showToast() {}
fun checkInput() {}
fun initView() {}
fun loadUserData() {}

不推荐:

fun GetUserName() {}
fun show_toast() {}
fun CHECKINPUT() {}

常见命名方式:

场景推荐命名
获取数据getUserInfo()
加载数据loadData()
初始化界面initView()
初始化监听initListener()
显示提示showToast()
检查输入checkInput()
保存数据saveUserInfo()
删除数据deleteUser()
更新界面updateUI()

二十三、函数使用建议

开发中可以遵循以下建议:

  1. 一个函数只做一件事。
  2. 函数名要能表达函数的作用。
  3. 函数不要写得太长。
  4. 重复代码可以封装成函数。
  5. 没有必要修改外部状态时,尽量让函数只根据参数返回结果。
  6. Android 中可以把初始化界面、初始化数据、设置监听拆成不同函数。
  7. 优先使用清晰的函数名,而不是过度追求简短。

例如:

fun initView() {
    // 初始化界面
}

fun initData() {
    // 初始化数据
}

fun initListener() {
    // 设置监听事件
}

比所有代码都写在 onCreate() 中更清晰。


二十四、总结

Kotlin 中使用 fun 定义函数。

基本格式:

fun 函数名(参数名: 参数类型): 返回值类型 {
    函数体
    return 返回值
}

常见函数类型包括:

函数类型示例
无参数无返回值函数fun sayHello()
有参数函数fun greet(name: String)
有返回值函数fun add(a: Int, b: Int): Int
表达式函数fun add(a: Int, b: Int) = a + b
默认参数函数fun greet(name: String = "游客")
可空参数函数fun printName(name: String?)
扩展函数fun Context.showToast(message: String)
高阶函数fun doSomething(action: () -> Unit)

对于 Android Kotlin 开发来说,函数主要用于:

封装逻辑、减少重复代码、提高代码可读性、拆分 Activity/Fragment 中的业务流程。

初学时重点掌握:

fun sayHello() {
    println("Hello Kotlin")
}

fun add(a: Int, b: Int): Int {
    return a + b
}

fun showToast(message: String) {
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}

最后记住一句话:

函数的作用,就是把一段可以复用的代码封装起来。

在 Android 开发中,写好函数可以让代码结构更加清晰,也更方便后期维护。

【免费】最新区块链钱包和私钥的助记词碰撞器,bybit使用python开发 【免费】最新助记词钱包碰撞器,全链全网络,一周左右就有,稳定高效。 阅读详情

相关推荐

MATLAB绘图中文乱码终极解决方案:从方框到清晰显示的全面指南

本文提供了MATLAB绘图中文乱码的全面解决方案。针对中文显示为方框的问题,从单次绘图的临时字体设置,到通过修改默认配置实现一劳永逸,再到系统级字体排查与Java环境配置,给出了详细的步骤指南。文章还涵盖了字体名称指定、图像导出防丢失以及跨平台协作等高级技巧,帮助用户彻底解决中文乱码困扰。

weixin_29093017的博客 613

Kotlin的基本使用

示例四:定义一个可为空的全局变量,在emptyE中对其判空处理,在不为空的情况下执行emptyF, 在emptyF中将全局变量转为大写,但此时不能完成编译,因为uppercase方法不知道外部进行类判空处理,所以需要加上非空断言工具!,即非常确定此处不为。之分,只允许有一个主构造函数,可以拥有多个此构造函数,两者区别在于,主构造函数没有函数体,直接在类名之后完成定义。当只有一句表达式时,可省略。示例二:因为数组下标是从0开始,所以在遍历数组时,数组长度为n的数组,当下标移动到n即越界,所以使用。...

FranzLiszt的博客 1480

用Scratch实现凯撒密码:图形化编程与古典密码学的趣味结合

字符编码与移位运算是计算机处理文本数据的基础原理之一,它通过将字母映射为数字实现信息转换。在密码学领域,凯撒密码作为最经典的替换密码,直观地展示了基于规则字符替换的加密思想,其核心价值在于通过简单算法揭示加密解密的基本框架。这种原理在编程教育中尤为重要,能够帮助初学者理解循环、变量和字符串处理等核心概念。结合Scratch图形化编程环境,学习者可以通过拖拽积木可视化构建加密算法,将抽象的移位操作转化为交互式游戏。本项目以凯撒密码为例,通过实时密钥调整和动态字母表映射,生动演示加密过程,并自然融入暴力破解和密

weixin_32428571的博客 309

Kotlin入门和常用简易示例

val member1 = Array(5, { value -> (value + 10) })//10..14 value 默认为0。val member = arrayOf(1, 2, 3)//生成Array。//忽略可为NULL性:!区间:in/ in downto/ step /in until。//0-9,不包含最后的值10。//默认返回Unit,如函数test1()

xiongmaodaxia02的博客 246

【讯飞星火大模型AI】SpringBoot整合星火API:从零构建智能数据分析助手

本文详细介绍了如何使用SpringBoot框架整合讯飞星火大模型API,从零构建一个智能数据分析助手。通过清晰的步骤,指导开发者完成API密钥申请、项目搭建、SDK集成与核心代码编写,实现用户通过自然语言指令和CSV数据,即可自动获得ECharts图表代码与专业数据分析结论,极大降低数据分析与可视化的门槛。

neovim7hacker的博客 275

金蝶云星空应用开发初级考试题目汇总

摘要:本文为金蝶云星空应用开发初级考试题目汇总

2401_86113757的博客 3799

Kotlin示例一:使用Kotlin的Android TextView示例

1.在Kotlin创建新项目 步骤 描述 1. 打开Android Studio。 2. 点击File => New => New Project。将应用程序名称写为TextView。然后,选中Include Kotlin Support并单击下一步按钮。 3. 选择您需要的最低SDK。但是,我们选择17作为最低SDK。然后,单击下一步按钮 4. 然后,选择...

lojloj的博客 4984

从零到一:KUKA机械臂与ROS的工业级通讯协议深度解析

本文深度解析KUKA机械臂与ROS的工业级通讯协议,重点对比EKI与RSI两种核心接口的技术特点与应用场景。详细介绍了网络架构设计、数据包解析机制及ROS-I集成方法,并提供实时性能优化与故障排除策略,为工程师实现高可靠性工业自动化集成提供完整解决方案。

2a4s6d8f0g的博客 296

kotlin示例

【代码】kotlin示例。

lxyoucan的博客 731

特斯拉 Model 3解析(八)全面拆解特斯拉自动驾驶大脑:AP控制器硬核技术解析

算力极限:双FSD = 144 TOPS,专为AI推理优化。存储架构:LPDDR4 + NAND + NOR,保证高速/可靠启动。通信架构:以太网传视频,CAN传控制,TSN保障实时性。感知输入:多路摄像头 + 高速SerDes,满足全景感知。电源设计:功率模块+被动元件海洋,稳定性优先。功能安全:双芯片冗余 + GPS + 紧急呼叫,容错率极高。🎯 在我看来,特斯拉AP控制器就是一台“车载超算”,它在电源设计、存储架构和功能安全上远超一般新势力方案。

weixin_43199439的博客 1438

【2026-Spark实验一-Windows中安装Spark环境】

本文详细介绍了在Windows系统中配置Spark 3.5.8开发环境的完整流程。主要内容包括:安装JDK 8并配置环境变量,下载并解压Spark 3.5.8预编译版,设置SPARK_HOME系统变量,配置Hadoop的winutils工具解决Windows兼容性问题。通过spark-shell和SparkPi示例程序验证环境配置成功,确保Spark能够正常运行分布式计算任务。文中特别强调了路径命名规范、环境变量设置顺序等关键细节,提供了完整的配置截图和验证方法,帮助开发者快速搭建稳定的Spark学习环境。

pblh123的专栏 1586

kotlin 构造函数重载_Kotlin程序| 构造函数重载示例

kotlin 构造函数重载 构造函数重载 (Constructor Overloading) A Kotlin class has a primary constructor and one or more secondary constructors. When a class has more than one constructor, it will be known as construc...

cumt30111的博客 3283

解锁RK3588多屏异显:MIPI+HDMI+EDP混合输出全攻略

本文详细介绍了RK3588处理器在MIPI+HDMI+EDP混合输出配置中的技术实现与应用。作为一款高性能处理器,RK3588凭借其强大的图形处理能力,支持多屏异显功能,可满足智能安防、工业控制等领域的多屏显示需求。文章从硬件连接、设备树配置、内核驱动设置到显示参数调整,系统阐述了配置流程,并针对信号不稳定、显示模式不匹配等常见问题提供了解决方案。通过智能安防监控案例,展示了该技术在提高监控效率方面的实际应用价值。随着技术进步,RK3588多屏异显技术将在更多领域发挥重要作用,为开发者提供灵活多样的显示方案

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2431

kotlin函数式编程_我最喜欢的Kotlin函数式编程示例

kotlin函数式编程by Marcin Moskala 通过Marcin Moskala One of the great things about Kotlin is that it supports functional programming. Let’s see and discuss some simple but expressive functions written in Ko...

cumi7754的博客 417

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Kotlin flatMap 函数 操作示例

Kotlin flatMap 函数 操作示例

chuyouyinghe的专栏 306

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Kotlin】apply 内联扩展函数 ( apply 函数原型 | apply 函数示例 | Kotlin 调用 Java API )

I . 内联扩展函数 apply II . Kotlin 调用 Java API III . apply 内联扩展函数示例 ( 调用 Java API 处理图像 )

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1472

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Kotlin中的扩展函数与属性示例详解

Kotlin 中类的扩展方法并不是在原类的内部进行拓展,通过反编译为Java代码,可以发现,其原理是使用装饰模式,对源类实例的操作和包装,其实际相当于我们在 Java中定义的工具类方法,并且该工具类方法是使用调用者为第一个参数的,然后在工具方法中操作该调用者;这是为了避免偶然性的命名冲突。不管String类是用Java、Kotlin,或者像Groovy的其他JVM语言编写的,只要它会编译为Java类,就可以为这个类添加自己的扩展。理论上来说,扩展函数很简单,它就是一个类的成员函数,不过定义在类的外面。

大模型学习路线 1669

通过示例理解带有接收器的 Kotlin 函数字面量

本文提供了一些简单的代码示例,使用函数字面量和接收器(也称为 lambda/匿名函数和接收器)。我遇到了这种 lambda 语法——NavGraphBuilder.() -> Unit结果它被称为Function Literal with Receiver,也称为Lambda/Anonymous Function with Receiver。语法如下所示:下面显示了一些使用带有接收器的函数文字构建自定义字符串的示例。

xiaokangss的博客 293

Kotlin扩展函数怎么用?这5个经典示例让你秒变高级开发者

掌握Kotlin扩展函数的实用技巧,本文通过5个经典示例详解其在Android开发中的常见应用场景。涵盖字符串处理、集合操作等核心方法,提升代码可读性与复用性。Kotlin 扩展函数 示例清晰易懂,值得收藏。

AlgoPerch的博客 1100

kotlin 构造函数_Kotlin程序| 主要构造函数示例

kotlin 构造函数 主要建设者 (Primary Constructor) A Kotlin class have Primary constructor and one or more Secondary constructor. Kotlin类具有Primary构造函数和一个或多个Secondary构造函数。 In Kotlin, Primary Constructor is the Pa...

cumtb2002的博客 302

Kotlin中回调函数的使用示例

本文介绍了Kotlin中回调函数的实现方式。首先定义了一个DataTest类,其中包含一个可为空的回调函数f1,类型为(Int)->Unit。在printSelf()方法中通过f1?.invoke(c)调用该回调。在main函数中创建DataTest实例并实现回调函数{m.f1={println("callback:${it}")}},当调用printSelf()时会执行该回调,输出参数值。最终输出结果展示了类属性和回调函数的执行效果。

lph009的博客 304

【Kotlin扩展函数实战宝典】:掌握10个必会的扩展函数示例,提升开发效率90%

掌握Kotlin扩展函数示例,轻松提升开发效率。本文精选10个实用场景,涵盖字符串处理、集合操作与Android开发优化,无需修改源码即可扩展功能,代码更简洁易读。学习高效编程技巧,值得收藏。

PixelGlow的博客 815

为什么顶级开发者都在用Kotlin函数式编程?答案就在这6个示例中

掌握Kotlin函数式编程核心技巧,通过6个实用示例提升代码简洁性与可维护性。涵盖高阶函数、Lambda表达式等关键方法,适用于Android开发与并发处理场景。Kotlin函数编程示例助你写出更安全高效的代码,值得收藏。

LiteCompile的博客 736

ARouter 使用教程,kotlin高阶函数示例

Activity 之间的跳转 假设我们现在要从 A 页面跳转到 B 页面,那我们要怎么办呢? 第一步:在目标页面使用 @Route 注解,并指定 path @Route(path = ARouterConstants.COM_ACTIVITY1) public class ActivityOne extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate.

m0_66264630的博客 683

如何写出优雅的Kotlin代码?这8个扩展函数示例让同事惊呼“大神”

掌握Kotlin扩展函数技巧,轻松提升代码优雅度。本文精选8个实用示例,涵盖字符串处理、集合操作等常见场景,通过简洁语法增强原有类功能,无需继承或修改源码。学习高效编码方法,让开发更流畅,值得收藏。

PoliVein的博客 661
上一篇: Kotlin变量定义与常用数据类型详解
下一篇: Kotlin条件语句和循环语句详解
TechNomad
博客等级 码龄2年 787粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值