唯心又看了诗忆之前写的几个高阶函式练习。「嗯⋯⋯我觉得你与其说是对高阶函式不熟,不如说是对匿名函式不熟唷。就算不指定string: String ->
,在函式只有一个参数的情形下,可以直接用it
;但是多个参数就要一一指名道姓罗。」
fun main() {
meowPrint(printer = { println(it) })
}
fun meowPrint(string: String = "Hello World", printer: (String)-> Unit) {
printer(string)
printer("meow~")
}
她继续说:「而且,当函式参数排在参数尾端的情形下,函式可以拉出括号之外。如果其他参数都打算使用预设值,那就连括号都可以直接拿掉。」
fun main() {
meowPrint("Haha") { println(it) }
meowPrint{ println(it) }
}
「如果参数就只有一个,且那个参数就是函式参数也符合这个条件吗?」诗忆提出一个比较极端的例子。
唯心笑了笑:「那和第二个例子一样,因为没有传入其他参数,括号可以整个拿掉。」她想了想,决定趁此让诗忆学会各种写法。「还有啊,函式除了当作参数传入以外,也能当作回传值唷。比如我们把各种会带语助词的话独立成一个函式,然後再把函式回传存成变数来呼叫。」
fun main() {
val 喵君说 = 说("喵")
val 汪君说 = 说("汪")
喵君说("早安")
喵君说("午安")
汪君说("晚安")
}
fun 说(语尾词: String) : (String)-> Unit {
return { println("${it} ${语尾词}~") }
}
早安 喵~
午安 喵~
晚安 汪~
「如果写成表达式的话,还可以省去宣告回传的型别。」唯心补充说。
fun 说(语尾词: String) = {
it: String ->
println("${it} ${语尾词}~")
}
<<: D14 - 彭彭的课程# Python 函式参数详解:参数预设值、名称对应、任意长度参数(1)
前言 我是一位程序设计的初学者,对程序设计非常有兴趣,希望在这个系列的Leetcode挑战中能提升自...
题目 实现一个资料结构,能支持下面4个操作: 执行每个操作,时间复杂度都要求为 O(1) Inc(s...
隔了几天忙一下...(最近真的忙爆,谁叫我是鸟事处理大师呢...? (自我膨胀?) 第三十一篇!! ...
Lambda expression 於 C# 3.0 开始提供, 可以使用 lambda 运算式来建...
1.原本的input 改为 el-autocomplete 并加上 :fetch-suggestio...